(1)
def calc(a,b):#a,b稱為形式引數,簡稱形參,
c=a+b
return c
sum=calc(1,2)#1,2稱為實際引數,簡稱實參
print(sum)
#位置實參,按照順序傳遞
result=calc(b=2,a=1)#a和b稱為關鍵字引數
print(result)
#關鍵字實參,按照關鍵字傳遞
(2)
需要注意的是在函式呼叫過程中,進行引數的傳遞,如果是不可變物件,在函式體的修改不會影響實參的值,如果是可變物件,在函式體的修改會影響到實參的值。例子如下:
def fun(arg1,arg2): print('arg1=',arg1)#輸出arg1= 11 print('arg2=',arg2)#輸出arg2= [22, 33, 44] arg1=100 arg2.append(10) print('arg1=',arg1)#輸出arg1= 100 print('arg2=',arg2)#輸出arg2= [22, 33, 44, 10]num1=11num2=[22,33,44]print(num1) #輸出11,最先執行print(num2)#輸出[22, 33, 44]print('*****')#輸出*****fun(num1,num2)print(num1)#輸出11,整數不是可變物件,經過函式體以後,還是11print(num2)#輸出[22, 33, 44, 10],因為列表是可變物件,經過函式體以後,現在加了10
(3)函式的返回值,如果是1個,直接返回。如果是多個,會返回元組。如果沒有返回值,return可以不寫。
def fun1(): return 'hello'res=fun1()print(res)#輸出hello def fun2(): return 'hello','world'res1=fun2()print(res1)#輸出('hello', 'world')
(4)函式定義時,使用*定義個數可變的位置形參,結果為一個元組. 使用**定義個數可變的關鍵字形參,結果為一個字典。而且位置形參要放在關鍵字形參之前。
def fun(*args):#函式定義時,使用*定義個數可變的位置形參,結果為一個元組 print(args) fun(10)##輸出(10,)fun(20,30)#輸出(20, 30) def fun1(**args):#函式定義時,使用**定義個數可變的關鍵字形參,結果為一個字典 print(args)fun1(a=10)#輸出{'a': 10}fun1(a=1,b=2,c=3)#輸出{'a': 1, 'b': 2, 'c': 3} def fun2(a,b,c): print(a,b,c)#輸出1 2 3lst=[1,2,3]fun2(*lst)#前面加個*,就可以將列表中的每個元素都轉換為位置實參傳入dic={'a': 1, 'b': 2, 'c': 3}fun2(**dic)#前面加**,就可以將字典中的每個元素都轉換為關鍵字實參傳入