Python 函式的語法及引數傳遞

2021-10-05 10:20:43 字數 4279 閱讀 7685

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...