似乎python中的字符串和字符串的行爲基本上不同。當我一個字符串傳遞給它得到僅在局部函數的範圍修改的功能,但是當我做同樣的一個快譯通,它的範圍被修改超越功能:python中不一致的變量範圍
def change_str(s):
s += " qwe"
def change_arr(a):
a[1] = "qwe"
ss = "asd"
change_str(ss)
print ss
# prints:
# asd
aa = {0:"asd"}
change_arr(aa)
print aa
# prints:
# {0: 'asd', 1: 'qwe'}
是這種行爲是故意的,如果是的話,爲什麼?
[Python函數參數範圍(字典與字符串)]可能的重複](http://stackoverflow.com/questions/2951112/python-function-argument-scope-dictionaries-v-strings) – devnull
@devnull:雖然問題是相似的,我認爲這個問題有獨立的興趣,因爲'+ ='和'[] ='是可以在某些類型上完成的操作,而不是這些特定類型。另一個問題是將項目分配與裸名分配進行比較,該分配永遠不會改變。 – BrenBarn