# 全局变量,作用域:整个模块。
var_f0 = 123
def func1():
# 局部变量,作用域:func1
var_f1 = 456
def func2():
print("in func2 start......")
print("var_f0:", var_f0) # 在func2中可以访问外部变量
print("var_f1:", var_f1) # 在func2中可以访问外部变量
print("in func2 end......")
print("before func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func2()
print("after func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func1()
输出:
before func2:
var_f0: 123
var_f1: 456
in func2 start......
var_f0: 123
var_f1: 456
in func2 end......
after func2:
var_f0: 123
var_f1: 456
# 全局变量,作用域:整个模块。
var_f0 = 123
def func1():
# 局部变量,作用域:func1
var_f1 = 456
def func2():
print("in func2 start......")
print("var_f0:", var_f0) # 在func2中不可以访问
print("var_f1:", var_f1) # 在func2中不可以访问
var_f0 = 789 # 这并不是在给模块变量var_f0赋值,而是在内部重新定义了同名变量,导致print("var_f0:", var_f0)出错。
var_f1 = 789 # 这并不是在给模块变量var_f1赋值,而是在内部重新定义了同名变量,导致print("var_f1:", var_f1)出错。
print("in func2 end......")
print("before func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func2()
print("after func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func1()
输出:
before func2:
var_f0: 123
var_f1: 456
in func2 start......
var_f0: 123
Traceback (most recent call last):
File "U:/Project/Python_Training/Pytho_Basic/zz_test.py", line 29, in <module>
func1()
File "U:/Project/Python_Training/Pytho_Basic/zz_test.py", line 24, in func1
func2()
File "U:/Project/Python_Training/Pytho_Basic/zz_test.py", line 15, in func2
print("var_f1:", var_f1) # 在func2中可以访问
UnboundLocalError: local variable ‘var_f1‘ referenced before assignment
# 全局变量,作用域:整个模块。
var_f0 = 123
def func1():
# 局部变量,作用域:func1
var_f1 = 456
def func2():
global var_f0 # 声明改变量为外部变量
nonlocal var_f1 # 声明改变量为外部变量
print("in func2 start......")
print("var_f0:", var_f0) # 在func2中可以访问
print("var_f1:", var_f1) # 在func2中可以访问
var_f0 = 789 # 在func2中修正
var_f1 = 789 # 在func2中修正
print("in func2 end......")
print("before func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func2()
print("after func2: ")
print("var_f0:", var_f0)
print("var_f1:", var_f1)
func1()
输出:
before func2:
var_f0: 123
var_f1: 456
in func2 start......
var_f0: 123
var_f1: 456
in func2 end......
after func2:
var_f0: 789
var_f1: 789