代码之家  ›  专栏  ›  技术社区  ›  Woody1193 Nimmi Rashinika

Python:来自更高范围的变量“赋值前引用”[重复]

  •  1
  • Woody1193 Nimmi Rashinika  · 技术社区  · 8 年前

    假设我有一个方法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 一串 实际上是一个列表(很抱歉混淆)。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Amber    8 年前

    变量赋值在局部范围内创建新变量,除非 nonlocal 使用关键字(仅限Python 3):

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