1.儲存可執行**,在需要時多次呼叫;
2.減少**數量;
3.便於維護。
1 語法
2def 函式名(
[形參1
,形參2
,形參3..
..])
:3 **塊
示例:def
s(a,b)
:#函式定義
print
('a+b='
,a+b)s(1
,2)#函式呼叫
函式名必須符合識別符號的規範:包含字母、數字、下劃線,不能以數字開頭。
print是函式物件
print()是呼叫函式
形參即形式引數,定義形參就相當於在函式內部宣告了變數,但是並不是賦值。
實參即實際引數,如果在呼叫函式的時指定了形參,那麼在呼叫函式時必須傳遞實參,實參將會賦值給對應的形參,簡單來說有幾個形參就要有幾個實參。
定義形參時,可以為形參指定預設值。指定了預設值以後,如果使用者傳遞了引數則預設值不會生效;如果使用者沒有傳遞,則預設值就會生效。
def
s(a,b=2)
:print
('a+b='
,a+b)s(1
,10)#如果形參b被傳遞了實參10,結果為:a+b= 11s(1
)#如果形參b沒有被傳遞實參,結果為:a+b= 3
位置引數就是將對應位置的實參賦值給對應位置的形參。
注意事項
1.在形參未設定預設值的情況下,實參與形參的數量必須一致:
**
#實參與形參的數量一致**:
defs
(a,b,c,d)
:print
('a+b+c+d='
,a+b+c+d)s(1
,2,3
,4)# 結果為:a+b+c+d= 10--
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
---**
#實參與形參的數量不一致:**
defs
(a,b,c)
:print
('a+b+c+d='
,a+b+c+d)s(1
,2,3
,4)#報錯:typeerror: s() takes 3 positional arguments but 4 were given
defs
(a,b,c,d)
:print
('a+b+c+d='
,a+b+c+d)s(1
,2,3
)#報錯:typeerror: s() missing 1 required positional argument: 'd'
2.在形參設定了預設值的情況下,定義的的預設值的形參可以不定義實參:
```python
defs
(a,b,c,d=
100)
:print
('a+b+c+d='
,a+b+c+d)s(1
,2,3
)#結果為:a+b+c+d= 106
defs
(a,b=
100,c,d)
:print
('a+b+c+d='
,a+b+c+d)s(1
,2,3
)#結果為:syntaxerror: non-default argument follows default argument
關鍵字引數可以不按照形參定義的順序去傳遞,根據引數名進行傳遞
def
s1(a,b,c)
:print
('a='
,a)print
('b='
,b)print
('c='
,c)s1(c=
30,b=
20,a=10)
#結果為:a= 10 b= 20 c= 30
混合使用位置引數和關鍵字引數的時,位置引數必須在關鍵字引數前面
def
s2(a,b,c)
:print
('a='
,a)print
('b='
,b)print
('c='
,c)#當位置引數在關鍵字引數前面:
s2(10,20
,c=30
)#結果為:a= 10 b= 20 c= 30
#當位置引數不在關鍵字引數前面:
s2(10
,b=20,30
)#報錯:syntaxerror: positional argument follows keyword argument
1.定義函式時,可以在形參前面加1個*,這樣這個形參可以獲取到所有的實參,它會將所有的實參儲存到乙個元組中。
2.帶號的形參只能有1個,可以和其他引數配合使用,並且帶號的形參只能放在最後:
defs3(
*a):
print
('a='
,a)s3(10,
20,30)
#結果為元組a= (10, 20, 30)
defs3
(*a,b,c)
:print
('a='
,a)s3(10,
20,30)
#報錯:typeerror: s3() missing 2 required keyword-only arguments: 'b' and 'c'
3.*形參只能接受位置引數,不能接受關鍵字引數
defs3(
*a):
print
('a='
,a)s3(10,
20,c=30)
#報錯:typeerror: s3() got an unexpected keyword argument 'c'
1.形參可以接收其他的關鍵字引數,它會將這些引數統一儲存到字典當中。字典的key就是引數的名字,字典的value就是引數的值。
defs4(
**a)
:print
('a='
,a)s3(a=
10,b=
20,c=30)
#結果為字典a=
#實參只能是關鍵字引數
defs4
(**a)
:print
('a='
,a)s3(a=
10,b=20,
30)#報錯:syntaxerror: positional argument follows keyword argument
2.**形參只有1個,並且必須寫在所有引數的後面
defs4(
**a,
**b)
:print
('a='
,a)s3(a=
10,b=20,
30)#報錯: def s4(**a,**b):
^#syntaxerror: invalid syntax
傳遞實參時,也可以在序列型別的引數前新增星號,這樣它會自動的將序列中元素依次作為引數傳遞
要求序列中的元素的個數必須和形參的個數一致。
def
s5(a,b,c,d)
:print
('a ='
, a)
print
('b ='
, b)
print
('c ='
, c)
# 建立乙個元組e=(
10,20,
30,40)
# 傳遞實參時候,也可以在序列型別的引數前面新增*號,這樣它會自動的將序列三種的元素依次作為引數傳遞
s5(*e)
#結果:a = 10 b = 20 c = 30
# 建立乙個字典
# 可以通過**來對字典進行解包
f =s5(
**f)
函式傳引數 python 函式引數
1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...
函式傳引數 C 函式的定義及使用
美劇 小鬼當家 劇照 共1925字,閱讀約需5分鐘 概述函式宣告由函式返回型別 函式名和參數列構成。這三個元素被稱為函式宣告 function declaration 或函式原型 function prototype 乙個函式可在乙個檔案中被宣告多次。01函式原型由函式返回型別 函式名以及參數列構成...
python傳參方式 Python函式引數傳遞方式
python 函式引數傳遞方式並不像其他語言那樣是 指標 引用 和 值傳遞,而是 物件引用傳遞,本質上是 引用傳遞 可以說 python 中不存在 值傳遞,而是存在 不可變物件 容易誤判的操作 容易被誤認為是 引用傳遞 的操作 def case1 l list int none alist list...