2013-02-18 43 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