说说 Python 的作用域
发布日期:2021-06-29 21:14:27 浏览次数:3 分类:技术文章

本文共 900 字,大约阅读时间需要 3 分钟。

在函数内定义的变量,在函数的 “局部作用域” 中;而在函数外定义的变量,在 “全局作用域” 中。

在程序启动时,会创建一个全局作用域。当程序终止时,就会销毁这个作用域,其内部保存的变量也会被一同销毁。

一个函数被调用时,会创建一个局部作用域。当这个函数返回时,这个作用域就会被销毁。

1 全局作用域内,不能使用局部变量

全局作用域内如果使用了局部变量,就会抛错:

def cook():    dumplings = 3cook()print(dumplings)

运行结果:

NameError: name ‘dumplings’ is not defined

因为 cook() 返回后,其局部作用域中的 dumplings 变量也被一同销毁了,所以在全局作用域内无法访问。

2 局部作用域内,不能使用其它局部作用域内的变量

def dumpling():    dumplings = 5    print('dumpling()=' + str(dumplings))def cook():    dumplings = 3    dumpling()    print('cook()=' + str(dumplings))cook()

运行结果:

dumpling()=5

cook()=3

cook() 中调用了 dumpling(),因此其同名的 dumplings 变量被重新定义了。也就是说,一个函数内定义的局部变量与其它函数内部定义的变量,是完全隔离的。

另外,这个示例也说明了:不同作用域中的变量,可以同名。但不建议这样做,因为变量名相同,我们不好跟踪代码。

3 局部作用域内,可以使用全局变量

def cook2():    print(dumplings)dumplings = 3cook2()

运行结果:

3


总的来说,作用域与变量遵守以下规则:

  1. 全局作用域中的代码,无法使用局部作用域中定义的变量。
  2. 局部作用域可以使用局部作用域中的定义的变量。
  3. 一个函数局部作用域中,无法使用其它局部作用域中的变量。
  4. 变量如果分别定义在不同的作用域中,那么可以同名(不建议这样做)。

转载地址:https://deniro.blog.csdn.net/article/details/99200150 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说 Python 的 global 标识对变量作用域的影响
下一篇:说说 Python print() 函数不为人知的特性

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月23日 04时29分11秒