我可以在 python3.4 中访问与非本地或全局不同的变量吗?

Posted

技术标签:

【中文标题】我可以在 python3.4 中访问与非本地或全局不同的变量吗?【英文标题】:Can I get access to variable different from nonlocal or global in python3.4? 【发布时间】:2015-01-23 09:16:00 【问题描述】:

我可以访问特定范围内的其他变量吗?像这样:

variable = 'acces with global'
def function1:
    variable = 'function 1 variable'
    def function2:
        variable = 'I really like this name for variable'
        def function3:
            def access_to_local:
                variable = "it's another variable I can access too!"
            def access_to_global:
                global variable
                variable = 'now I have access to my global variable'
            def access_to_function2:
                nonlocal variable
                variable = 'And easy way to change function2 variable'
            def access_to_function1:
                #nonlocal^2 variable?
                variable = 'And how can I get access to variable in
                            function1?'

这不是生死攸关的问题,我只是好奇。 我只是学习了 python 中的全局和非本地如何工作。现在,这绝对足够了,但我想知道我所要求的是否可能。特别是,我读到了 pep,他们正在考虑制作“特定范围内的非本地”之类的东西。但他们决定改用非本地的。是不是因为有办法在没有非本地的情况下做到这一点?或者可能有一些非本地的技巧,比如写两次nonlocal nonlocal variable

【问题讨论】:

【参考方案1】:

不,你不能。没有办法指定 Python 应该跳过嵌套范围级别。

请注意,使用这么多层次的嵌套并不是很自然;你很少,如果有的话,一开始就需要使用这么多的嵌套。如果您需要在极少数情况下访问不同级别的变量,只需使用不同的名称即可。

【讨论】:

以上是关于我可以在 python3.4 中访问与非本地或全局不同的变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

static与非static的区别

如何访问 C 中的阴影全局变量?

PHP中静态方法(static)与非静态方法的使用及区别

Ognl中根元素与非根元素的关系

邮递员无法访问本地主机

Apollo GraphQL 本地和全局错误处理