python可变/不可变对象
- 可变对象:list/set/dict
- 不可变对象: bool/int/float/tuple/str/frozenset
def flist(l):
l.append(0)
print(l) # id(l) 2163330867784
l = [] # id(l) 2163330867784
flist(l) # [0] # id(l) 2163330867784
flist(l) # [0,0] # id(l) 2163330867784
def fstr(s):
s += 'o'
print(s) # id(s) 2281740962256 # id(s) 2281740961976
s = 'hell' # id(s) 2281737869720
fstr(s) # hello # id(s) 2281737869720
fstr(s) # hello # id(s) 2281737869720
s = 'hell' # id(s) 2326838404520
s += 'o' # id(s) 2326838434200
s = ['h','e','l','l',] # id(s) 1513567838792
s.append('o') # id(s) 1513567838792
s = ['hell'] # id(s) 2180415578696 id(s[0]) 2180416038312
s[0] += 'o' # id(s) 2180415578696 id(s[0]) 2180416067992
python 是通过对象引用进行传递
不可变对象进行操作时: 先把把值取出来进行操作,之后再储存到空间中,再指向新储存的内存地址
可变对象可以直接在原来对象上进行操作