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)
我相信这个问题会在 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)