8 函式 函式的引數

2021-09-29 17:56:56 字數 4360 閱讀 6264

1、預設引數

把第二個引數n的預設值設定為2,n就是預設引數:

def

power

(x, n=2)

: s =

1while

(n >0)

: s = s * x

n = n -

1return s

print

(power(3,

3))print

(power(5)

)#預設n = 2

輸出結果:

2725

設定預設引數時,需要注意:

一是必選引數在前,預設引數在後,否則python的直譯器會報錯;

二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。

有多個預設引數時,呼叫的時候,既可以按順序提供預設引數,也可以不按順序提供部分預設引數。當不按順序提供部分預設引數時,需要把引數名寫上。比如呼叫enroll('adam', 'm', city='tianjin'),意思是,city引數用傳進去的值,其他預設引數繼續使用預設值。

定義預設引數要牢記一點:預設引數必須指向不變物件!

2、可變引數

在python函式中,可以定義可變引數,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個。

定義可變引數和定義乙個list或tuple引數相比,僅僅在引數前面加了乙個*號。

在函式內部,可變引數接收到的是乙個tuple

#功能:給定一組數字a,b,c……,請計算a2 + b2 + c2 + ……。

defcalc1

(numbers)

:sum=0

for n in numbers:

sum=

sum+ n * n

return

sum# 呼叫calc1時,需要先組裝出乙個list或tuple

print

('入參為list:'

,calc1([1

,2,3

]))#list [1, 2, 3]

print

('入參為tuple:'

,calc1((1

,3,5

,7))

)# tuple (1, 3, 5, 7)

#定義可變引數:定義可變引數和定義乙個list或tuple引數相比,僅僅在引數前面加了乙個*號

#在函式內部,引數numbers接收到的是乙個tuple

defcalc

(*numbers)

:sum=0

for n in numbers:

sum=

sum+ n * n

return

sumprint

('呼叫可變引數:'

,calc(1,

2,3)

)#已經有乙個list或者tuple,要呼叫乙個可變引數

nums =[1

,2,3

]print

('取list中的值呼叫:'

,calc(nums[0]

, nums[1]

, nums[2]

))#簡化寫法:在list或tuple前面加乙個*號,把list或tuple的元素變成可變引數傳進去

#*nums表示把nums這個list的所有元素作為可變引數傳進去

print

('加*呼叫:'

,calc(

*nums)

)輸出結果:

入參為list:14

入參為tuple:84

呼叫可變引數: 14

取list中的值呼叫: 14

加*呼叫: 14

3、關鍵字引數

關鍵字引數允許你傳入0個或任意個含引數名的引數,關鍵字引數在函式內部自動組裝為乙個dict。

它可以擴充套件函式的功能。

# 關鍵字引數

defperson

(name, age,

**kw)

:print

('name:'

, name,

'age:'

, age,

'other:'

, kw)

person(

'michael',30

)person(

'bob',35

, city=

'beijing'

)person(

'adam',45

, gender=

'm', job=

'engineer'

)#1.0 先組裝出乙個dict,然後,把該dict轉換為關鍵字引數傳進去

extra =

person(

'jack',24

, city=extra[

'city'

], job=extra[

'job'])

# 對1.0的簡化寫法

person(

'jack',24

,**extra)

輸出結果:

name: michael age:

30 other:

name: bob age:

35 other:

name: adam age:

45 other:

name: jack age:

24 other:

name: jack age:

24 other:

**extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得乙個dict,注意kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra

4、命名關鍵字引數

命名關鍵字引數需要乙個特殊分隔符*,*後面的引數被視為命名關鍵字引數

命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯

如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了

命名關鍵字引數可以有預設值

#命名關鍵字引數需要乙個特殊分隔符*,*後面的引數被視為命名關鍵字引數

defperson

(name, age,

*, city, job)

:print

(name, age, city, job)

#命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯

print

(person(

'jack',24

, city=

'beijing'

, job=

'engineer'))

#如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了

defperson

(name, age,

*args, city, job)

:print

(name, age, args, city, job)

#命名關鍵字引數可以有預設值,從而簡化呼叫:

defperson

(name, age,

*, city=

'beijing'

, job)

:print

(name, age, city, job)

#由於命名關鍵字引數city具有預設值,呼叫時,可不傳入city引數

print

(person(

'jack',24

, job=

'engineer'

))

5、引數組合

在python中定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用。但是請注意:

引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

8 函式及引數

一.函式 1.含義 包裹一部分 實現某乙個功能 達成某乙個目的 2.特點 可以反覆呼叫,提高 的復用性,提高開發效率,便於維護管理 3.函式的格式 定義函式 def 函式名 code 呼叫函式 函式名 4.函式的命名 命名規則與變數一樣 字母數字下劃線,首字元不能用數字 嚴格區分大小寫,且不能用關鍵...

Python 函式 8 可變長引數

可變長引數 可變長指的是實參的個數不固定 按位置定義的可變長的實參 按關鍵字定義的可變長的實參 一 按位置 def func x,y,args print x,y print args func 1,2,3,4,5 處理按位置定義的多出的實參 然後賦值給 後的變數來儲存成乙個元組的形式 args 3...

函式的引數

參考 先說一下預設引數 當我們呼叫乙個函式的時候,忘記傳入相應的引數了,那麼函式肯定呼叫失敗。為了讓函式可以在 失誤 的情況下也可以呼叫出來,那麼預設引數就可以派上用場了。例如,計算x2 可以完全把第二個引數值設為預設引數。def power x,n 2 s 1 while n 0 n n 1 s ...