Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果内部函数已经有同名的变量,如何从内部函数访问封闭函数中的非局部变量_Python - Fatal编程技术网

Python 如果内部函数已经有同名的变量,如何从内部函数访问封闭函数中的非局部变量

Python 如果内部函数已经有同名的变量,如何从内部函数访问封闭函数中的非局部变量,python,Python,我需要找到从内部函数\u Nonlocal()引用变量x=“Nonlocal”的方法。可能是我引用globals()['x']的方式,但我需要你的帮助 请注意:我不能评论或删除x=“Local”,以编写非本地x x=“全局” def封闭函数(): x=“非本地” def内部_函数_全局() x=“本地” 打印(globals()['x'])#调用全局a def内部函数非局部() x=“Local”#您可以添加一个方法来获取非本地值: x = "Global" def enc

我需要找到从
内部函数\u Nonlocal()
引用变量
x=“Nonlocal”
的方法。可能是我引用globals()['x']的方式,但我需要你的帮助

请注意:我不能评论或删除
x=“Local”
,以编写
非本地x

x=“全局”
def封闭函数():
x=“非本地”
def内部_函数_全局()
x=“本地”
打印(globals()['x'])#调用全局a
def内部函数非局部()

x=“Local”#您可以添加一个方法来获取
非本地值:

x = "Global"

def enclosing_funcion():
    x = "Nonlocal"

    def non_local():
        return x

    def inner_function_global():
        x = "Local"
        print(globals()['x'])   # Call the global a

    def inner_function_nonlocal():
        x = "Local"        # <- This line can NOT be commented!!!
        print(non_local())   # <- What should I specify here in order to print x which is nonlocal?

    inner_function_global()
    inner_function_nonlocal()


if __name__ == '__main__':
    enclosing_funcion()

您可以添加另一个内部函数,包含
非局部x
/
返回x
,并调用它吗?不,我不能这样做,Jason!非常感谢您的及时帮助,托马斯和杰森!无论如何,我们可以结束这个问题,除非有任何方法可以以类似的方式引用
globals()['x']
x = "Global"

def enclosing_funcion():
    x = "Nonlocal"

    def non_local():
        return x

    def inner_function_global():
        x = "Local"
        print(globals()['x'])   # Call the global a

    def inner_function_nonlocal():
        x = "Local"        # <- This line can NOT be commented!!!
        print(non_local())   # <- What should I specify here in order to print x which is nonlocal?

    inner_function_global()
    inner_function_nonlocal()


if __name__ == '__main__':
    enclosing_funcion()
Global
Nonlocal