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

时间:2014-11-25 11:31:20

标签: python python-3.x nested python-nonlocal

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

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中进行全局和非本地工作。现在,这绝对够了,但我想知道我问的是不可能的。特别是,我读到了关于这一点,并且他们正在考虑制作“特定范围内的非本地”之类的东西。但他们决定使用非本地代替。是因为有没有非本地的方式吗?或者也许有一些非局部技巧,比如写nonlocal nonlocal variable两次?

1 个答案:

答案 0 :(得分:0)

不,你不能。没有办法指定Python应该跳过嵌套的作用域级别。

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