为啥我的变量仅在 Python 中的某个函数/语句中发生变化?

Posted

技术标签:

【中文标题】为啥我的变量仅在 Python 中的某个函数/语句中发生变化?【英文标题】:Why does my variable change in the certain function/statement only in Python?为什么我的变量仅在 Python 中的某个函数/语句中发生变化? 【发布时间】:2022-01-15 18:55:48 【问题描述】:

如果我在函数中更改它,我的变量将不会更新。这是代码:```

my_var = None
def func(string):
    if string == "Hello":
        my_var = string
        print(my_var) # prints 'Hello'

print(my_var) # prints None

如何更新所有脚本的变量?

【问题讨论】:

你没有调用方法,用func(),只用到了第一行和最后一行代码(一切都执行了,但是方法定义不调用就没用了) 您需要了解变量范围。无论如何——让函数改变非局部变量作为副作用通常不是一个好习惯。让你的函数 return 一些东西然后my_var = myfunc(string) 【参考方案1】:

首先你需要真正调用func,因为现在你的代码和

my_var = None
print(my_var)

所以改成

my_var = None
func("Hello")
print(my_var)

另外,你需要告诉你的方法使用全局的my_var,否则它会在方法的范围内定义一个同名的变量,而全局变量不会改变

def func(string):
    global my_var
    if string == "Hello":
        my_var = string
        print(my_var)

【讨论】:

以上是关于为啥我的变量仅在 Python 中的某个函数/语句中发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

如果评估的变量为 False,为啥我的 django 模板中的这个 IF 语句会执行?

如何使用窗口函数仅在 POSTGRES 中选择不超过某个值的行

为啥 useEffect 不能在 return 语句中访问我的状态变量?

Python 中的 if 语句和设置变量

为啥这个带有布尔变量的函数不起作用?

为啥我的自定义函数调用方法中的 println 语句没有出现在日志中?