作用域和命名空间

作用域(scope)
作用域指的是变量生效的区域

在python中一共有两种作用域
全局作用域
-全局作用域在程序执行时创建,在程序执行结束时销毁
-所有函数以外的区域都是全局作用域
-在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问

函数作用域
-函数作用域在函数调用时创建,调用结束时销毁
-函数每调用一次就会产生一个新的函数作用域
-在函数作用域中定义的变量,都是局部变量,只能在函数内部被访问

变量的查找
-当我们使用变量时,会优先在当前作用域中寻找该变量,如果有,则使用;若没有,继续去上一级中寻找
若还没有,继续去上一级作用域中寻找;直到找到全局作用域依然没有找到,则抛出异常

a=20
def fn():
'''这是一个文档字符串的示例
函数的作用是:
函数的参数是:
a.作用,类型,默认值....
b.作用,类型,默认值....
c.作用,类型,默认值....'''
global a #修改为全局变量
a=10
print(a)

fn()
print(a)


命名空间(namespace)
命名空间指的时变量存储的位置,每一个变量都需要存储到指定的命名空间当中
每一个作用域都会有一个它对应的命名空间
全局命名空间,用来保存全局变量。函数命名空间用来保存函数中的变量
命名空间实际上就是一个字典,是一个专门用来存储变量的字典

locals()用来获取当前作用域的命名空间
如果在全局作用域中调用locals()则获取全局命名空间,如果函数作用域中调用locals()则获取函数命名空间

posted @ 2020-04-25 15:45  Challen_Moon  阅读(155)  评论(0)    收藏  举报