Python函数-作用域(全局变量-局部变量)-名称空间

一、作用域

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

 

posted @ 2019-08-09 15:43  桑铎是大叔  阅读(646)  评论(0)    收藏  举报