首页 > 解决方案 > 通过局部函数改变函数变量

问题描述

我想通过其辅助函数更改函数中的变量。我尝试了以下方法:

def f():
    e = 70
    print(e) # prints 70
    def helper(e):
        print(e) # prints 70
        e = 100
        print(e) # prints 100
    helper(e) #function called to change e
    print(e)  # Still prints 70 :( Why?

f() #prints 70, 70, 100, 70

为什么它不改变 e 的值(我将它作为参数传递,python 也没有复制值,所以 f 中 e 的值应该改变)?另外我怎样才能得到所需的结果?

标签: pythonpython-3.x

解决方案


ein 函数f是本地的,f并且您传递了参数e。但是helper当你这样做的时候,里面e=100是 . 范围内的另一个局部变量helper。因此,您应该从帮助程序返回值并更新 e。

你应该做这个,

def f():
    e = 70
    print(e) 
    def helper(d):
        print(d) 
        e = 100
        print(e)
        return e # prints 100
    e = helper(e) 
    print(e)  

f()

推荐阅读