标签:python
1、嵌套函数定义
在python中有一种特殊函数,这种函数定义在函数的内部,像这样定义在其他函数内的函数叫做内部函数,内部函数所在的函数叫做外部函数。我们还可以定义多层嵌套函数,即内部函数定义一个内部函数。内部函数定义很简单,同样使用def定义,只是定义在一个函数的内部,举个例子:
>>> var=90 >>> def test(): def nest(): global var print(var) var+=1 return nest
>>> test()() 90
这里要注意执行时是test()(),而不是test().nest(),这是因为test()返回了一个nest,然后执行nest()。
2、讨论嵌套函数的作用域
内部函数可以使用外部函数定义的变量,例如:
def f(): def f1(): x=3 print ("目前在函数f1()中:x=", x) def f2(): print ("目前在函数f2()中:x=", x) return f2 return f1
>>> f()()()
目前在函数f1()中:x= 3
目前在函数f2()中:x= 3
但
>>> def f():
def f1():
x=3
print ("目前在函数f1()中:x=", x)
def f2():
x+=5
print ("目前在函数f2()中:x=", x)
return f2
return f1
>>> f()()()
目前在函数f1()中:x= 3
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
f()()()
File "<pyshell#46>", line 6, in f2
x+=5
UnboundLocalError: local variable ‘x‘ referenced before assignment
标签:python
原文地址:http://ypyu1989.blog.51cto.com/6786671/1539094