Python函数可以修改外部列表或字典但不能修改字符串

时间:2018-05-09 08:41:12

标签: python

为什么Python函数可以修改listdict而不是string外部:

这是有道理的,因为函数创建范围,所以setit函数创建新变量:

ttt = 'ttt'

def setit(it):
    ttt = it
    print(ttt)

def showit():
    print(ttt)

if __name__ == "__main__":
    setit("lsdfjlsjdf")
    showit()

但是如何解释这一点,setit函数可以修改外部列表:

aaa = []

def setit(it):
    ttt = it
    aaa.append(it)

def showit():
    print(aaa)


if __name__ == '__main__':
    setit(123)
    showit()
    setit(234)
    showit()

1 个答案:

答案 0 :(得分:4)

因为字符串是不可变的。你不能编辑字符串,你可以创建新的字符串。

来源:Python Docs

另请参阅:Function calls in Python