问题标签 [python-nonlocal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 非本地语句
Pythonnonlocal
语句有什么作用(在 Python 3.0 及更高版本中)?
Python 官方网站上没有文档,help("nonlocal")
也无法正常工作。
python - nonlocal keyword in Python 2.x
I'm trying to implement a closure in Python 2.6 and I need to access a nonlocal variable but it seems like this keyword is not available in python 2.x. How should one access nonlocal variables in closures in these versions of python?
python - 如何访问闭包内的外部函数变量(python 2.6)?
来自维基百科
我需要以与使用 python 3.x 中的“非本地”关键字类似的方式访问外部函数变量。有没有办法在 python 2.6 中做到这一点?(不一定使用 nonlocal 关键字)
python - Python,如何更改父范围内变量的值?
例如:assginment 语句将声明一个新的局部变量。
use global 声明将在 global 中使用 foo:
如何更改 func1 范围内的变量 foo?
谢谢你的帮助。
编辑:
谢谢Brandon Craig Rhodes,我终于明白你的意思了。
如果嵌套的范围超过 3 个,我可以将变量存储在列表中。
我实际上只是使用了一个全局变量。
所以,如果有两个函数嵌套,我们可以使用
和
如果嵌套了三个以上的函数,
并且每个函数都使用其他函数范围内的变量,
为什么不声明一个全局列表变量呢?
谢谢你的帮助!!!
python - 类定义中的 Python 非本地语句
我正在尝试对 Python 3 源代码中的范围进行一些分析,但我对非本地语句语句在类定义中的工作方式感到困惑。
据我了解,类定义在一个新的命名空间内执行它的主体(称为dict)并将类名绑定到类型(name,bases,dict)的结果。只要非本地 x 引用绑定在封闭非本地范围内某处的变量,它就应该起作用。
由此,我希望以下代码能够编译和运行:
但这失败了
而下面的代码运行完美
谁能在这里解释函数定义的闭包和类定义之间的区别?
python - 在 Python 中重用内部函数
我试图弄清楚如何在多个其他函数中使用 Python 3 函数(使用非局部变量)而不重新定义它。这是我的意思的一个非常简化的示例:
我收到一个错误(SyntaxError: No binding for nonlocal 'var' found
),但我怀疑我这样做非常错误。我从来不打算自己跑inner()
。如何inner()
以正确的方式重用?我不能只在里面定义它outer1()
然后在里面重用它outer2()
,可以吗?
好吧,呃...大众需求...这是我的代码的相关部分...
python - nonlocals() 在哪里?
如何获取当前范围的非局部变量?函数vars
,locals
和globals
存在,但是有没有函数可以得到nonlocals
?
为什么调用时没有列出非本地人vars
?
更新
我的问题是无法枚举当前范围内可用的变量,因为既不包括vars
也不globals
包括非本地 AFAICT。
我经常vars
在如下代码中使用:
如果这些变量中的任何一个在包含函数的范围内,则会失败。
python - Python < 3 中是否有类似“非本地”的东西?
我有一段这样的代码:
我发现foo
在最外面的范围中定义很难看,我更愿意只在outer
函数中使用它。正如我正确理解的那样,在 Python3 中,这是由nonlocal
. 对于我想要的东西,有没有更好的方法?我更愿意声明和分配foo
,outer
也许global
在inner
:
(A) 不起作用,foo
似乎在最外层范围内搜索。
python - Ruby 等价于 python nonlocal
我正在尝试用 Ruby 编写一个闭包。这是用 Python 编写的代码:
Ruby 中是否有“非本地”等价物,所以我可以从增量内部访问和更改变量 x?