名称空间:
-
内置空间:python解释器自带的一块空间
-
全局空间:py文件中顶格写的就是全局空间
-
局部空间:函数体中就是局部空间
-
加载顺序:
-
内置空间
-
全局空间
-
局部空间
# def func(): # a = 1 # print(a) # func()
-
-
取值顺序:
-
局部空间
-
全局空间
-
内置空间
a = 10 def func() print(a) func()
-
-
作用域:
- 全局作用域:全局+内置
- 局部作用域:局部
函数的嵌套
不管在什么位置,只要是函数名()就是在调用一个函数。
# 混合嵌套:
# def f1():
# print(11)
#
# def f2():
# print(22)
# f1()
#
# def f3():
# print(33)
# f1()
#
# def run():
# f3()
# f2()
# f1()
# run()
例2:
# def func(a):
# print(a)
# return f1(foo(a))
#
# def foo(b):
# print(b)
# return b + 5
#
# def f1(args):
# return args + 10
#
# print(func(5))
输出结果:5,5,20
# def foo(a):
# a = 10
# def f1(b):
# c = b
# def foo(c):
# print(c)
# print(foo.__doc__)
# foo(c)
# print(b)
# f1(a)
# print(a)
# foo(25)
输出结果:10,10,10
修改全局:
global,只修改全局
nonlocal:修改局部,修改离他最近的一层,上一层没有继续向上层查找,只限局部
# a = 10
# def func():
# global a
# a = a - 6
# print(a)
# fun ()
# a = 100
# def func():
# b = 10
# def foo():
# b = a
# def f1():
# nonlocal b
# b = b + 5
# print(b) # 105
# f1()
# print(b) # 105
# foo()
# print(b) # 10
# func()
# print(a) # 100