Python 中的基本障碍:保留函数内部的更新值

Basic hurdle in Python: preserving updated values from inside function

我相信这个问题会在 30 秒内被知道的人解决,但我的尝试肯定比这更长...

myString = 'pre-function'

def changeString():
    myString = 'post-function'

changeString()

print(myString)

既然print(myString)是在changeString()之后调用的,为什么myString仍然包含它的前函数值(即"pre-function")?

我预计(并希望)myString = "post-function",但无法弄清楚使函数正确 return 更新值的范围问题(而且,是的,我已尝试插入 return myString 在 changeString() 结束之前无济于事)。

感谢您的帮助。

您需要显式使用全局变量myString:

def changeString():
    global myString
    myString = "post-function"

python中对全局变量的描述很好:https://www.w3schools.com/python/python_variables_global.asp

函数内的变量具有函数级范围,即对变量的更改不会在 运行 函数之外持续存在。

按照 Kaeden 的建议使用 global myString 可以解决这个问题,但是如果您希望您的函数做的不仅仅是更改一个硬编码的特定变量,最好使用 return。例如,试试这个:

myString = 'pre-function'

def changeString():
    return 'post-function'

myString = changeString()

print(myString)