:::

2. 函數

def main():
   print(data) 

main() 

 

全域變數

def show1():
   print(v)

def show2():
   v=8 
   print(v)
   
   show1()

v = 7
show2()
傳回結果 8 7
外部的值會傳入到函數中(需要呼叫函數前設定值),但在函數中修改的變數值,不會影響外部變數原值。如果要隨著做更動,函數內要加 global v
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]
L 為 list 類別,值會自動向下傳遞。
 
 

呼叫函數時,傳入的變數(字串、數值)不會做改變,如果想要改變傳入值,作法:

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

 

 


Google網站翻譯工具列

站內搜尋