一、作用域
1、函数中定义的变量叫局部变量,在程序一开始定义的变量叫全局变量
2、全局变量作用域是整个程序,局部变量作用域是该变量函数
3、变量查找顺序为 局部变量>全局变量
4、全局、局部变量重名时,定义局部变量的函数内起作用,其他地方全局变量起作用
5、函数内修改全局变量 global 变量名
name="胖汶" # 全局变量
def love():
age=18 # 局部变量
globle name = "小可爱" # 只在函数内修改全局变量
print('hello world !')
二、名称空间 name space
存放名字的地方,如x=1 1存放在内存中 x存放在哪? 名称空间 正是存放么名字x与1绑定关系的地方
python里面有很多名字空间,每个地方都有自己的名字空间,互不干扰,不同空间中的两个相同名字的变量之间没有任何联系。
种类 LEGB
locals 函数内部的名称空间,一般包含函数的局部变量和形参
enclosing function 嵌套函数中外部函数的名称空间,若 fun2 嵌套在fun1里,对fun2来说,fun1的名称空间就是 enclosing
globals 当前模块空间,模块指一些py文件,就是所 globals()类似全局变量
builtins 内置模块空间,是内置变量或内置函数名称空间,print(dir(builtins))可查看包含额值
不同变量的作用域不同,是有这个变量的名称空间决定的
作用域就是范围
全局范围:全局存活,全局有效
局部范围:临时存活,局部有效
查看作用域方法 globals(),locals()
作用域范围 即locals -> enclosing function -> globals ->builtins