如何在python中定义自由变量?

如何在python中定义自由变量?,第1张

如何在python中定义自由变量? 自由变量的定义:已使用,但 既不是global也不是bound

例如:

  1. x
    在代码1中不是免费的,因为它是一个 全局 变量。
  2. x``bar()
    在代码2中不是免费的,因为它是一个 绑定 变量。
  3. x
    在中是免费的
    foo()

Python的区别在于闭包。当前环境中未定义自由变量,即局部变量的集合, 也不
全局变量!因此,必须在其他地方定义。这就是闭包的概念。在代码2中,

foo()
关闭于中
x
定义的
bar()
。Python使用词法作用域。这意味着,解释器仅通过查看代码即可确定范围。

例如:

x
在中被称为
foo()
,因为
foo()
被包围
bar()
,并
x
在中绑定
bar()

全局范围由Python专门处理。可以将全局作用域视为最外部作用域,但是由于性能原因,我没有这样做。因此,不可能

x
自由全球化

免税

生活不是那么简单。存在 自由的全局 变量。Python文档(执行模型)说:

全局语句的作用域与同一块中的名称绑定 *** 作相同。如果最接近的自由变量包围范围包含全局语句,则将自由变量视为全局语句。

>>> x = 42>>> def foo():...   global x...   def baz():...     print(x)...     print(locals())...   baz()... >>> foo()42{}

我自己不知道 我们都在这里学习。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5650187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存