领取淘宝天猫优惠券:优惠淘 | 欢迎使用随心而码微信小程序,微信搜一搜【随心而码】可直接搜到。

Python 入门笔记——函数之作用域

Python Hicoder 513℃ 0评论

局部和全局作用域

在函数内声明的变量,只作用于函数内部——局部作用域,这个变量称为局部变量。
在所有函数外部声明的变量,作用于整个程序——全局作用域,这个变量称为全局变量。


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 入门笔记——函数之作用域

喜欢 (0)