问题标签 [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.

0 投票
9 回答
143440 浏览

python - Python 非本地语句

Pythonnonlocal语句有什么作用(在 Python 3.0 及更高版本中)?

Python 官方网站上没有文档,help("nonlocal")也无法正常工作。

0 投票
10 回答
44672 浏览

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?

0 投票
1 回答
379 浏览

python - 如何访问闭包内的外部函数变量(python 2.6)?

来自维基百科

我需要以与使用 python 3.x 中的“非本地”关键字类似的方式访问外部函数变量。有没有办法在 python 2.6 中做到这一点?(不一定使用 nonlocal 关键字)

0 投票
2 回答
5631 浏览

python - Python,如何更改父范围内变量的值?

例如:assginment 语句将声明一个新的局部变量。

use global 声明将在 global 中使用 foo:

如何更改 func1 范围内的变量 foo?
谢谢你的帮助。

编辑:

谢谢Brandon Craig Rhodes,我终于明白你的意思了。

如果嵌套的范围超过 3 个,我可以将变量存储在列表中。

我实际上只是使用了一个全局变量。


所以,如果有两个函数嵌套,我们可以使用

如果嵌套了三个以上的函数,
并且每个函数都使用其他函数范围内的变量,
为什么不声明一个全局列表变量呢?
谢谢你的帮助!!!

0 投票
2 回答
4975 浏览

python - 类定义中的 Python 非本地语句

我正在尝试对 Python 3 源代码中的范围进行一些分析,但我对非本地语句语句在类定义中的工作方式感到困惑。

据我了解,类定义在一个新的命名空间内执行它的主体(称为dict)并将类名绑定到类型(name,bases,dict)的结果。只要非本地 x 引用绑定在封闭非本地范围内某处的变量,它就应该起作用。

由此,我希望以下代码能够编译和运行:

但这失败了

而下面的代码运行完美

谁能在这里解释函数定义的闭包和类定义之间的区别?

0 投票
1 回答
1760 浏览

python - 在 Python 中重用内部函数

我试图弄清楚如何在多个其他函数中使用 Python 3 函数(使用非局部变量)而不重新定义它。这是我的意思的一个非常简化的示例:

我收到一个错误(SyntaxError: No binding for nonlocal 'var' found),但我怀疑我这样做非常错误。我从来不打算自己跑inner()。如何inner()以正确的方式重用?我不能只在里面定义它outer1()然后在里面重用它outer2(),可以吗?

好吧,呃...大众需求...这是我的代码的相关部分...

0 投票
1 回答
925 浏览

python - nonlocals() 在哪里?

如何获取当前范围的非局部变量?函数vars,localsglobals存在,但是有没有函数可以得到nonlocals

为什么调用时没有列出非本地人vars

更新

我的问题是无法枚举当前范围内可用的变量,因为既不包括vars也不globals包括非本地 AFAICT。

我经常vars在如下代码中使用:

如果这些变量中的任何一个在包含函数的范围内,则会失败。

0 投票
3 回答
390 浏览

python - Python < 3 中是否有类似“非本地”的东西?

我有一段这样的代码:

我发现foo在最外面的范围中定义很难看,我更愿意只在outer函数中使用它。正如我正确理解的那样,在 Python3 中,这是由nonlocal. 对于我想要的东西,有没有更好的方法?我更愿意声明和分配fooouter也许globalinner

(A) 不起作用,foo似乎在最外层范围内搜索。

0 投票
3 回答
719 浏览

python - Ruby 等价于 python nonlocal

我正在尝试用 Ruby 编写一个闭包。这是用 Python 编写的代码:

Ruby 中是否有“非本地”等价物,所以我可以从增量内部访问和更改变量 x?

0 投票
2 回答
14314 浏览

python - Python中非本地语句的语法错误

我想测试这个问题的答案中指定的非本地语句的使用示例:

但是当我尝试加载此代码时,总是会收到语法错误:

有谁知道我在这里做错了什么(我使用的每个示例都有语法错误,包含nonlocal)。