def change(s):
s = s + "!"
word = "holiday"
change(word)
print word
为什么输出这个是“假日”而不是“假期”?是因为3行代码不属于函数吗?如果是这样,为什么它在函数之外是否重要,因为它在更改函数之后?
答案 0 :(得分:6)
试试这个:
def change(s):
return s + "!"
像这样使用:
word = 'holiday'
print change(word)
或者像这样:
word = 'holiday'
word = change(word)
print word
请注意,对函数内部的参数字符串所做的任何修改都不会在函数外部看到 ,因为函数中的s
参数是本地范围内的函数,你所做的任何更改(如问题中的代码)只会在函数内部显示,而不是在函数外部。 Python中的所有函数参数都是passed by value。
答案 1 :(得分:3)
您只修改函数s
中的局部变量change
。这不会修改变量word
。如果您想修改word
,则需要返回change
的结果并将其分配给word
:
def change(s):
s = s + "!"
return s
word = "holiday"
word = change(word)
print word
答案 2 :(得分:1)
您没有从更改中返回值。
尝试:
def change(s):
s = s + "!"
return s
word = "holiday"
word = change(word)
print word
所以在上面的例子中,s被修改,然后word被重新赋值为修改后的值。
答案 3 :(得分:1)
您正在将该单词的“副本”而非该单词实例传递给该函数。因此,更改将应用于函数
中的s变量中保存的单词副本答案 4 :(得分:1)
s
中的{p> change(s)
是一个名称,当您致电word
时,该名称与change(word)
的值绑定。
在行s = s + "!"
中,您将s
绑定到一个新字符串,该字符串是通过连接绑定到s
和!
的值创建的,而不是对{{word
执行任何操作1}}。
最好不要有副作用,即使可能,所以返回新值更好。
def change(s):
return s + '!'