Python作用域问题
定义:在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域。Python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量能被访问的范围。即Python变量的作用域由变量所在源代码中的位置决定。
作用域的产生:
- 只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。
- 在作用域中定义的变量,一般只在作用域中有效。
- 在if-elif-else、for-else、while、try-except/try-finally等关键字的语句块中并不会产生作用域
作用域问题:
L(local)局部作用域 函数内的命名空间
E(enclosing)嵌套作用域 外部嵌套函数的命名空间
G(global)全局作用域 所在模块(文件)的命名空间
B(built-in)内置作用域 Python内置模块的命名空间
下面给大家用例子分别解释
1.0 全局作用域
count = 10 #定义全局变量
if __name__ == "__main__":
print(count) # 调用全局变量
如果想在函数中调用全局变量的时候
count = 10 # 定义全局变量
def Printtime(): # 定义函数
global count # 使用global关键字使用全局变量