2013-02-18 45 views
-1

我想通过将值传递给另一个函数但不追加另一个字符串来添加字符串。使用通过引用将新字符附加到字符串

def test2(s1,s2): 
    s1 = s1+s2 
    s1 = 'z'+s1 
    return len(s1) 

def test(s1,s2): 
    i = test2(s1,s2) 
    print(i) 
    print(s1) 

String1 = raw_input() 
String2 = raw_input() 

test(String1, String2) 

输入 - a,b 产量预期 - 3, zab

但我越来越 - 3,a

+0

字符串对象是不可变的。 – JBernardo 2013-02-18 22:03:19

回答

3

在Python和字符串对象没有这样的事情“按引用传递”是不可改变的,所以你不能修改传递给函数的字符串。

+0

如何以其他方式执行相同的操作? – Fox 2013-02-18 22:04:40

+1

@狐狸你不能。如果你真的需要这个,请返回新的字符串。 – wRAR 2013-02-18 22:05:36

+0

k ..谢谢..想通了..用类 – Fox 2013-02-18 22:11:00

-2

如果您确实想要处理通过引用传递的对象,则可以使用列表。您的程序的一个小修改然后变成

def test2(s1,s2): 
    s1.extend(s2) 
    s1.insert(0,'z') 
    return len(s1) 

def test(s1,s2): 
    i = test2(s1,s2) 
    print(i) 
    print(s1) 

String1 = list(raw_input()) 
String2 = list(raw_input()) 

test(String1, String2) 
+1

将一个字符串转换为一个字符列表,以便您可以操纵它,看起来真的很难看。 – 2013-02-18 22:37:38

+0

我同意 - 它不是一个优雅的解决方案。然而,要强调的是,通过引用并不是问题中的问题 - 它是数据类型的不变性。 – 2013-02-18 22:42:05

+0

而且我需要添加'z'到字符串的开头,而不是末尾 – Fox 2013-02-18 23:55:41