Python中的函式(三)

2021-09-07 21:22:32 字數 2949 閱讀 7674

python中的函式(三)

在前面兩篇文章中已經**了函式的一些相關用法,下面一起來了解一下函式引數型別的問題。在c語言中,呼叫函式時必須依照函式定義時的引數個數以及型別來傳遞引數,否則將會發生錯誤,這個是嚴格進行規定的。然而在python中函式引數定義和傳遞的方式相比而言就靈活多了。

一.函式引數的型別

之前我們接觸到的那種函式引數定義和傳遞方式叫做位置引數,即引數是通過位置進行匹配的,從左到右,依次進行匹配,這個對引數的位置和個數都有嚴格的要求。而在python中還有一種是通過引數名字來匹配的,這樣一來,不需要嚴格按照引數定義時的位置來傳遞引數,這種引數叫做關鍵字引數。下面舉兩個例子:

def

display(a,b):

print

a

print

b

display(

'hello

','world

')

這段程式是想輸出'hello world',可以正常執行。如果像下面這樣寫的話,結果可能就不是預期的樣子了:

def

display(a,b):

print

a

print

b

#這樣會報錯

display('

hello')

#這樣會輸出'world hello'

display('

world

','hello

')

可以看出在python中預設的是採用位置引數來傳參。這樣呼叫函式必須嚴格按照函式定義時的引數個數和位置來傳參,否則將會出現預想不到的結果。下面這段**採用的就是關鍵字引數:

def

display(a,b):

print

a

printb#

下面2句達到的效果是相同的

display(a='

world

',b='

hello')

display(b='

hello

',a='

world

')

可以看到通過指定引數名字傳遞引數的時候,引數位置對結果是沒有影響的。

關鍵字引數最厲害的地方在於它能夠給函式引數提供預設值。比如:

def display(a='

hello

',b='

wolrd'):

print a+b

display()

display(b='

world')

display(a='

hello')

display(

'world

')

在上面的**中,分別給a和b指定了預設引數,即如果不給a或者b傳遞引數時,它們就分別採用預設值。在給引數指定了預設值後,如果傳參時不指定引數名,則會從左到右依次進行傳參,比如display('world')沒有指定'world'是傳遞給a還是b,則預設從左向右匹配,即傳遞給a。

使用預設引數固然方便,但是有一點要非常注意,在重複呼叫函式時預設形參會繼承之前一次呼叫結束之後該形參的值。下面看乙個例子:

def insert(a,l=):

print

linsert(

'hello')

insert(

'world

')

其執行結果為:

二.任意個數引數

一般情況下我們在定義函式時,函式引數的個數是確定了的,然而某些情況下我們是不能確定引數的個數的,比如要儲存某個人的名字和它的小名,某些人小名可能有2個或者更多個,此時無法確定引數的個數,就可以使用收集引數了,使用收集引數只需在引數前面加上'*'或者'**'。

def storename(name,*nickname):

print

'real name is %s

' %name

for nickname in

nickname:

print

nickname

storename(

'jack')

storename(u

'詹姆斯

',u'

小皇帝'

)storename(u

'奧尼爾

',u'

大鯊魚',u'

三不沾')

'*'和'**'表示能夠接受0到任意多個引數,'*'表示將沒有匹配的值都放在同乙個元組中,'**'表示將沒有匹配的值都放在乙個dictionary中。

最後需要補充一點:python中函式是可以返回多個值的,如果返回多個值,會將多個值放在乙個元組或者其他型別的集合中來返回。

關於函式的東西暫時就只講這麼多了,具體的用法和細節需要在平時寫**中慢慢理解和積累。

python函式實驗 Python中的函式

一 定義 1 def函式名 引數 2 3 4 函式體5 6 返回值 函式的定義主要有如下要點 def 表示函式的關鍵字 函式名 函式的名稱,日後根據函式名呼叫函式,用引號標記即可 函式體 函式中進行一系列的邏輯計算,如 傳送郵件 計算出 11,22,38,888,2 中的最大數等.引數 為函式體提供...

python中的lo函式 Python 函式

函式 內建函式 print input len type print hello world 函式 引數 定義函式 def greet name print name 早上好 return 第一行def的意思是定義 define greet是 函式名 自己取的 再搭配乙個括號和冒號,括號裡面的nam...

Python中的函式

你可以定義乙個由自己想要功能的函式,以下是簡單的規則 任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。函式的第一行語句可以選擇性地使用文件字串 用於存放函式說明。函式內容以冒號起始,並且縮排。return expression 結束函 數,選擇性地返回乙個值給呼叫方。不帶表示式的...