Python基礎 函式

2021-10-05 20:27:57 字數 3133 閱讀 2471

• 內容概要

• 1. 函式簡介

• 2. 函式的引數

• 3. 不定長引數

• 4. 引數的解包

****

• 函式也是乙個物件

• 函式用來儲存一些可執行的**,並且可以在需要時,對這些語句進行多次呼叫

語法def 函式名([形參1,形參2,形參3…]):

**塊注意:

函式名必須符合識別符號的規範(可以包含字母、數字、下劃線但是不能以數字開頭)

#建立函式

deff1()

:#函式內部**塊列印我是函式f1,當函式被呼叫時列印

print

('我是函式f1'

)#呼叫函式f1

f1()

#輸出 我是函式f1

print是函式物件 print()是呼叫函式

2.1 形參和實參

• 形參(形式引數) 定義形參就相當於在函式內部宣告了變數,但是並不是賦值

• 實參(實際引數)指定了形參,那麼在呼叫函式時必須傳遞實參,實參將會賦值給對應的形參,簡單來說有幾個形參就要有幾個實參

2.2 函式的傳遞方式

• 定義形參時,可以為形參指定預設值。指定了預設值以後,如果使用者傳遞了引數則預設值不會生效。如果使用者沒有傳遞,則預設值就會生效

• 位置引數:位置引數就是將對應位置的實參賦值給對應位置的形參

• 關鍵字引數 : 關鍵字引數可以不按照形參定義的順序去傳遞,而根據引數名進行傳遞

• 混合使用位置引數和關鍵字引數的時候必須將位置引數寫到關鍵字引數前面去

#乙個有引數的函式,接收姓名並列印

#位置引數 形參和實參一一對用對應 實參第乙個傳給形參第乙個

deff1

(name,age,heigth,weigth)

:print

('姓名:%s,年齡:%d歲,身高:%dcm,體重:%dkg'

%(name,age,heigth,weigth)

)f1(

'張三',18

,180,65

)#輸出 姓名:張三,年齡:18歲,身高:180cm,體重:65kg

f1('李四',20

,175,70

)#輸出 姓名:李四,年齡:20歲,身高:175cm,體重:70kg

#關鍵字引數 傳值會傳到指定的關鍵字

deff1

(name,age,heigth,weigth)

:print

('姓名:%s,年齡:%d歲,身高:%dcm,體重:%dkg'

%(name,age,heigth,weigth)

)#如果繼續上面方法呼叫傳參,姓名引數將會傳給age,而age格式化輸出是整數,就會報錯

f1(name=

'張三'

,age=

18,heigth=

180,weigth=65)

#輸出 姓名:張三,年齡:18歲,身高:180cm,體重:6kg

#打亂順序傳值

f1(age=

20,name=

'李四'

,weigth=

70,heigth=

175)

#輸出 姓名:李四,年齡:18歲,身高:180cm,體重:6kg

• 定義函式時,可以在形參前面加乙個*,這樣這個形參可以獲取到所有的實參,它會將所有的實參儲存到乙個元組中

• 帶*號的形參只能有乙個,可以和其他引數配合使用

• *形參只能接受位置引數,不能接受關鍵字引數

deff2(

*name)

:print

(name)

f2('張三'

,'李四'

)#輸出 ('張三', '李四')

f2(name=

'張三'

)# typeerror: f2() got an unexpected keyword argument 'name'

#和其他引數配合 帶*號的形參一定要在最後乙個

#如果沒在最後乙個,傳遞到*號的時候,會把所有的實參儲存到元組中,後邊的形參將沒有值傳遞,將會報錯

deff2

(gender,

*name)

:print

(gender,name)

f2('男'

,'張三'

,'李四'

)#輸出 男 ('張三', '李四')

• **形參可以接收其他的關鍵字引數,它會將這些引數統一儲存到字典當中。字典的key就是引數的名字,字典的value就是引數的值

• **形參只有乙個,並且必須寫在所有引數的後面

def

f3(name,

**names)

:print

(name)

print

(names)

f3(name=

'李四'

,張三=

'男',小紅=

'女')

#輸出 李四

#

**

• 傳遞實參時,也可以在序列型別的引數前新增星號,這樣它會自動的將序列中元素依次作為引數傳遞

• 要求序列中的元素的個數必須和形參的個數一致

names=

['張三',18

,'男'

]def

f4(name,age,gender)

:print

(name,age,gender)

f4(*names)

#加*號序列的元素會依次傳遞給形參 和for迴圈列印列表一次列印乙個元素相似

#不加*號

#會將names列表傳遞給第乙個形參,後面的形參將沒有實參傳入

#序列數量和形參數量不一致

names=

['張三',18

,'男'

,'老師'

]def

f4(name,age,gender)

:print

(name,age,gender)

f4(*names)

# typeerror: f4() takes 3 positional arguments but 4 were given

Python基礎 函式

函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...

Python 函式基礎

定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...