似乎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