局部和全局作用域
在函数内声明的变量,只作用于函数内部——局部作用域,这个变量称为局部变量。
在所有函数外部声明的变量,作用于整个程序——全局作用域,这个变量称为全局变量。
name = 'Jack' # 这个name为全局变量
def print_name():
name = 'John' # 这个name为局部变量,只作用于当前函数
print(name) #打印的也是局部变量 John
使用规范
- 局部变量不能在全局作用域内使用
def num():
nums = 63527
num()
print(nums)
程序报错:
Traceback (most recent call last):
File "G:/学习python/Python编程快速上手/第四章/func_1.py", line 17, in <module>
print(nums)
NameError: name 'nums' is not defined
报错原因:nums只属于局部作用域,当执行完num()函数后,局部作用域便销毁了,即nums变量也不存在了。所以运行print(nums),Python便报错,说nums没有定义。
- 局部变量只能在自己所属的局部作用域内使用
def love():
lover = 'ziteng'
other_love()
print(lover)
def other_love():
lover = 'xuanya'
love() # ziteng
程序运行流程:
- 全局变量可作用于任何一个局部作用域
def tree():
print(tree_num)
tree_num = 188
tree() # 188
print(tree_num + 1) # 189
解释:在 tree() 函数中没有定义了的变量 tree_num 。所以当运行 tree() 函数时,Python认为它是引用全局变量 tree_num 。
- 局部变量和全局变量名称可以相同,但应尽量避免
def hi():
hiStr = 'Hello'
print(hiStr)
def world():
hiStr = 'World'
print(hiStr)
hi()
print(hiStr)
hiStr = 'Welcome!'
world()
print(hiStr)
打印结果如下:
World
Hello
World
Welcome!
转载请注明:随心而码 » Python 入门笔记——函数之作用域