1、变量作用域
1.1 含义
变量生效的范围
1.2 分类
(1) 局部作用域 ==> 局部变量
在Python中,局部变量是在函数内部定义的变量。
这些变量仅在定义它们的函数内部可见和可用。一旦退出该函数,它们就超出了作用域,变得不可访问。
# 示例
def func():
a = 1 # 局部变量,只能在func函数中使用
print("func:", a)
func()
def func2():
print("func2:", a)
func2() # NameError: name 'a' is not defined
print("外部:", a) # NameError: name 'a' is not defined
def func(a): # 形参a也是局部变量
print("func:", a)
func(1)
print("外部:", a) # NameError: name 'a' is not defined(2) 全局作用域 ==> 全局变量
在Python中,全局变量是在函数外部定义的变量。这些变量在程序的整个执行过程中都是可访问的
# 示例1
a = 1 # 全局变量
print("外部:", a)
def func():
print("func:", a)
func()
def func2():
print("func2:", a)
func2()# 示例2
# 全局变量和局部变量命名相同
a = 1 # 全局变量
def func():
a = 2 # 局部变量
print("func:", a)
print("外部1:", a)
func()
print("外部2:", a)# 示例3
# 注意:函数中如果有,则使用自己的;没有才往上一层找
a = 1 # 全局变量
def func():
a = 2
print("func:", a)
func()
print("外部:", a)1.3 global
在Python中,global 关键字用于在函数内部声明全局变量。如果想要在函数内部(局部作用域中)定义一个全局变量,或者修改全局变量的值,就需要使用 global 关键
# 示例
a = 1 # 全局变量
def func():
global a # 将a声明为全局变量
a = 2
print("func:", a)
func()
print("外部:", a)
def func():
global a # 声明为全局变量
a = 2 # 局部变量
print("func:", a)
func()
print("外部:", a)
def func2():
# global a, b, c
global a
global b
global c
a = 1
b = 2
c = 3
func2()
print(a, b, c)1.4 nonlocal【扩展】
用于在内层函数中引用并可能修改外层函数作用域中的局部变量,同时确保这个变量不是在当前函数内部新创建的局部变量,也不是全局变量、
注意:只能在嵌套函数中使用
# 示例1
def outer():
a = 1 # 外函数的局部变量
print("outer1:", a)
def inner(): # 内函数
nonlocal a
a = 2 # 内函数的局部变量
print("inner:", a)
# 外函数里面,内函数外面
inner()
print("outer2:", a)
outer()nonlocal 关键字用于在内函数中修改上一层的函数的局部变量的
# 示例2
a = 2
def outer():
nonlocal a # SyntaxError: no binding for nonlocal 'a' found(注意:nonlocal只能在嵌套函数中使用)
a = 1
print("outer:", a)
outer()# 示例3
def outer():
a = 1
print("outer1:", a)
def inner():
a = 2
print("inner1:", a)
def inner2():
nonlocal a
a = 3
print("inner22:", a)
inner2()
print("inner2:", a)
inner()
print("outer2:", a)
outer()著作权归文章作者所有。 未经作者允许禁止转载!