def main(): print(data) main()
def show1(): print(v) def show2(): v=8 print(v) show1() v = 7 show2()
傳回結果 8 7
def mylist(n,L=[]): myl.append(n) L.append(n) return L t = mylist(2) print(t) t2 = mylist(3) print(t2) [2] [2 , 3]
呼叫函數時,傳入的變數(字串、數值)不會做改變,如果想要改變傳入值,作法:
def change_val(x,y): x= 'new value' y=y+1 return x, y x = 'old value' y=5 print("x =%s , y=%s" % (x,y) ) #改變傳入值 x , y = change_val(x,y) print("x =%s , y=%s" % (x,y) )
結果
x =old value , y=5 x =new value , y=6
如果傳入的值是串列
def list_add(list_name): list_name.append('marry') list_A=['tom', 'jhon'] print(list_A) list_add(list_A) print(list_A) 傳出結果: ['tom', 'jhon'] ['tom', 'jhon', 'marry']
如果不想更改傳入的串列變數,可以切片的方式呼叫,這會複製一份資料傳入函數,速度也會比較慢些。
list_B=['paul', 'kathy'] print(list_B) list_add(list_B[:]) print(list_B) 傳出結果: ['paul', 'kathy'] ['paul', 'kathy']