连接字符串?

时间:2012-04-22 17:37:48

标签: python string

def change(s):
    s = s + "!"


word = "holiday"
change(word)    
print word

为什么输出这个是“假日”而不是“假期”?是因为3行代码不属于函数吗?如果是这样,为什么它在函数之外是否重要,因为它在更改函数之后?

5 个答案:

答案 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 + '!'