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']