一. 函数的嵌套

     1. 函数的嵌套调用

         定义:在电泳函数的过程中,调用的其他函数

 1 #函数嵌套的调用
 2 def max2(x,y):
 3     if x > y:
 4         return x
 5     else:
 6         return y
 7 
 8 def max3(a,b,c,d):
 9     res=max2(a,b)
10     res2=max2(res,c)
11     res3=max2(res2,d)
12     return res3
13 
14 res=max3(1,2,3,4)
15 print(res)
16 
17 #函数嵌套的定义:
18 def foo():
19     def foo1():
20         def foo2():
21             def foo3():
22                 print('from foo3')
23             foo3()
24         foo2()
25     foo1()
26 foo()

二.名称空间和作用域

    1. 名称空间:存放名字和变量值绑定关系的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。

        内置名称空间:在python解释器启动时产生,存放一些python内置名字。

        全局名称空间:在执行文件时产生,存放文件级别定义的名字。

        局部名称空间:在执行文件过程中,如果调用了函数,则产生该函数的局部名称空间,用来存放该函数内定义的名字,该名字在函数调用时生效,在函数调用结束后失效。

        名字的加载顺序是:内置====》全局 ====》局部

        名字的查找顺序是:局部====》全局 ====》内置

     2. 作用域:即作用范围

          作用域关系是在函数定义阶段就已经固定,与函数的调用无关。

         2.1 全局作用域:全局存活,全局有效(globals())

 1 max=1111
 2 def foo():
 3     def foo1():
 4         def foo2():
 5             def foo3():
 6                 print(max)
 7             foo3()
 8         foo2()
 9     foo1()
10 foo()
11 
12 #global 在函数内引用全局变量,可以修改全局变量
13 x=1111
14 def foo():
15     global x
16     x=100
17     def foo1():
18         def foo2():
19             def foo3():
20                 print(x)
21             foo3()
22         foo2()
23     foo1()
24 foo()
25 print(x)
View Code

相关文章: