【问题标题】:Python: Variable from higher scope "referenced before assignment" [duplicate]Python:来自更高范围的变量“在分配之前引用”[重复]
【发布时间】:2017-03-26 00:56:33
【问题描述】:

假设我有一个方法 foo:

def foo(string):
    def bar1():
        if '1' in string:
            string = string[2:]
        else:
            bar2()

    def bar2():
        if ('2' in string):
            string.insert(5, '1')
        else:
            string.insert(5, '2')

    bar1()

不幸的是,这会返回一个错误,指出在赋值之前引用了局部变量 string。我认为该字符串将从foo 的范围继承。我错了吗?请注意,变量 string 实际上是一个列表(很抱歉造成混淆)。

【问题讨论】:

  • 尝试像这样将字符串传递给 bar1():def bar1(string).

标签: python scope


【解决方案1】:

对变量的赋值会在本地范围内创建一个新变量,除非使用了 nonlocal 关键字(仅限 Python 3):

https://www.python.org/dev/peps/pep-3104/

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 2010-09-13
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2013-02-28
    • 2016-04-07
    • 2021-12-16
    • 2018-07-17
    相关资源
    最近更新 更多