python - 通过局部函数改变函数变量
问题描述
我想通过其辅助函数更改函数中的变量。我尝试了以下方法:
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 的值应该改变)?另外我怎样才能得到所需的结果?
解决方案
e
in 函数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()
推荐阅读
- java - 我如何识别巨大的物体?
- javascript - 根据html文本内容动态创建JS对象
- beagleboneblack - 如何在 beaglebone black 上格式化 eMMC?
- algorithm - 我对空间复杂性感到困惑
- python - 在带有标头的大型 DataFrame 中过滤掉 NaN
- angular - 使用量角器在测试 E2E 中上传文件
- image - 悬停在图像上
- swift - 如何使用 UrlSession.DataTaskPublisher 调用发布 Web 服务?
- ios - “UIView”类型的值没有成员“常量”
- azure-api-management - Azure APIM 发布者访问控制