【问题标题】:Revalue local variable in python function重估python函数中的局部变量
【发布时间】:2022-01-20 15:26:03
【问题描述】:

我是java脚本程序员,开始学习python。我尝试重新评估 python 函数中的局部变量。我的代码:

def first_function():
    var1 = 5
    def second_function():
        var1 = 10
    second_function()
    print(var1)

first_function()

结果这段代码是

5

但在执行 second_function 时,var1 重新赋值为“10”。我在谷歌搜索并找到“全球”解决方案。 如何在不定义全局变量的情况下解决此问题。 谢谢。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    使用nonlocal 让内部函数的名称引用外部函数中的名称。

    def first_function():
        var1 = 5
        def second_function():
            nonlocal var1
            var1 = 10
        second_function()
        print(var1)
    
    first_function()
    

    这是等价于global keyword的内部函数。

    global 一样,如果要分配给名称,则只需要nonlocal。不用nonlocal 也可以正常访问名称(就像不用global 也可以访问全局名称,例如print)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多