1. 程式人生 > >函數—參數會變嗎

函數—參數會變嗎

就會 兩個 clas 輸出 改變 ret entity pri int

一 參數是字符串(以及數字和元組)

字符串(以及數字和元組)是不可變的,無法被修改即只能被新值覆蓋

1 def change(n):
2     n=gumby
3         
4 name=entity
5 change(name)
6 print(name)
7 #輸出  entity

如果想要更改name 需要函數change(n)加上return n;將name重新賦值(name=change(name))

n聲明在函數內 所以函數結束後 n 就會消失

二 參數是可變的數據結構

例如 列表·

1 def try_to_change(n):
2     n[0]=mr.gumby
3 4 name=[mrs.sisly,six] 5 try_to_change(name) 6 print(name) #[‘mr.gumby‘, ‘six‘]

在這裏,可變的數據結構作為參數明顯地發生了改變,為了不讓原先的列表name發生變化,我們需要一個name的副本;

而 當序列做切片的適合,返回的切片總是一個副本。

1 name=[mrs.sisly,six]
2 n=name[ : ]

現在n 和 name 是兩個獨立的列表,其值相等,並且改變其中一個不會影響到另外一個,

1 def try_to_change(n):
2 n[0]=mr.gumby
3 print(n)
4 name=[‘mrs.sisly‘,‘six‘]
5 try_to_change(name[:])
6 print(name)

結果:

1 # [‘mr.gumby‘, ‘six‘]   n
2 # [‘mrs.sisly‘, ‘six‘]     name

函數—參數會變嗎