天天看點

python函數形參實參_python中函數定義之實參、形參

一般在函數的定義中,會有一類變量---形參,它是函數完成其工作的一項資訊。實參往往是調用函數時傳遞給函數的資訊。我們在調用函數時,将要讓函數使用的資訊放在括号内。例如定義一個函數def greet_user(username):,在調用greet_user('jeese')中,将實參'jeese'傳遞給了函數greet_user(),這個值被存儲在形參username中。

傳遞實參有很多種方式,下面了解一下他們。

1、位置實參

在調用函數時,每個實參要與定義中的形參關聯起來。最簡單的關聯方式就是基于實參的順序,這種關聯方式就叫做位置實參。實參的順序要與定義中的形參順序一緻。

1 defdescribe_pet(animal_type,pet_name):2 print('\nI have a'+animal_type+'.')3 print('My'+animal_type+"'s name is"+pet_name.title()+'.')4

5 describe_pet('hamster','harry')

在調用describe_pet()函數時,要按照形參的順序提供一個動物的類型和一個名字。。平時根據需要可以多次調用。

運作結果:

1 I have a hamster.2 My hamster's name is Harry.

如果調用函數中給出的實參順序和定義中的形參不同,就會出現令人啼笑皆非的結果。如下:

1 describe_pet('harry','hamster')

I have a harry.2 My harry's name is Hamster.

這種情況的出現就是實參順序不正确,按照這種方式,實參‘harry’會被存儲到形參animal_type中;同理,'hamster'将存儲到形參pet_name中,結果就是我們得到了上面的名為Hamster的harry。

是以切記,位置實參一定要與形參順序一緻。

2、關鍵字實參

關鍵字函數實參是傳遞給函數的名稱-值對。關鍵字實參讓你無需考慮函數調用中的實參順序,還能明确各個值的用途,得到的結果是一樣的。

1 describe_pet(animal_type='hamster',pet_name='harry')2 describe_pet(pet_name='harry',animal_type='hamster')3

4 I have a hamster.5 My hamster's name is Harry.

3、預設值

在函數定義編寫的時候,可以給形參指定預設值。當在調用函數中給形參提供了實參時,python将使用指定的實參值,否則就是使用預設的形參值。使用形參給定的預設值時,調用函數時可以省略相應的實參。

1 def describe_pet(pet_name,animal_type='dog'):2 print('\nI have a'+animal_type+'.')3 print('My'+animal_type+"'s name is"+pet_name.title()+'.')4

5 describe_pet('willie')

運作結果:

1 I have a dog.2 My dog's name is Willie.

這個函數的編寫改變了形參的順序,由于帶有預設值的animal_type不需要在函數調用中指定類型,是以函數隻涉及到pet_name需要給出名字。鑒于python依然将該實參認為是位置實參,若需要給出函數名字,則這個名字的實參将關聯到函數定義中的第一個形參,故而将帶預設值的形參放在後面。

若函數調用中,給animal_type重新賦了新的值,則原來的預設值即可忽略。