计算机或程序底部自有的空间python
全局名称空间包括全局空间和内置空间,能够访问第一层的内容函数
局部的空间,没有内置和全局权限大ui
a = 10 # 全局名称空间中的内容 b = 10 def fn(): # fn也在全局名称空间 b = 20 # 局部名称空间 print(b) def gn(): a = 30 print(a) fn() >>>#结果: 10 gn() >>>#结果: 30
内置+全局spa
能够访问所有的内容,也有权修改code
局部(函数被调用)blog
只可修改当前参差空间的内容,若是想修改全局做用域的内容在第一行写global+调用的内容,再加以修改作用域
a = 110 # 全局 def fn(): # b = 20 # 局部 def gn(): # 局部 print(globals()) # 能够查看全局做用域中的内容 :>>> '__name__': '__main__', '__doc__': None, # '__package__': None, '__loader__': # <_frozen_importlib_external.SourceFileLoader object at 0x00000150A1ECFEF0>, # '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': # 'E:/python全栈15期/day11/code/04 名称空间.py', '__cached__': None, # 'a': 110, 'fn': <function fn at 0x00000150A1E8C1E0>} >>>(a在全局中,fn也在全局中) print(locals()) # 查看当前做用域中的内容 >>> 当前层次局部做用域没有内容,因此返回一个{} gn() fn() #先调用 函数 fn 再定义函数gn,再调用函数gn
函数能够互相的嵌套io
a = 1 # 01 def fun_1(): #03 a = 2 # 05 def fun_2(): #07 global a a = 3 #09 def fun_3(): #11 a = 4 #13 print(a) #14 print(a) #10 >>>结果: 3 fun_3() # 12 >>>结果:函数fun_3最后是 4 print(a) #15>>> 结果 : 3 print(a) #06 >>>结果:2 fun_2() #08 print(a) #16 >>> 结果: 2 print(a) #02 >>> 结果: 1 fun_1() #04 >>>fun_1函数最终结果 2 print(a) # 17 >>> 结果: 3 #>>> 因此最终输出为 1,2,3,4,3,2,3
global和nonlocal关键function
a = 30 def func(): print(a) func() >>> # 30 print(a) >>>#30
a = 30 def func(): global a # 1. 能够把全局中的内容引入到函数内部 , 2. 在全局建立一个变量 a = 20 print(a) func() >>> # 结果: 20 print(a) >>>#结果: 20 global把全局那个变量a 修改了
a = 10 def outer(): a = 40 def inner(): # 在inner中改变a的值 nonlocal a # 寻找外层函数中离他最近的那个变量,但不会找到全局那个变量 print(a) # 40 inner() outer() >>> # 结果 40 print(a) >>> # 结果 10