python 函數(實參與形參、傳遞參數)


函數

什么是函數?函數是帶名字的代碼塊,用於完成具體的工作。寫出一個函數后,就可以一直調用。

 定義函數,函數的基本組成:

1.1 向函數傳遞參數

向函數中傳遞任意參數,這樣打印出的結果就可以根據自己的選擇,做出改變。即是下一節講到的形參

1 #向函數傳遞信息
2 
3 def greet_user(username):
4     """顯示簡單的問候語"""
5     print("hello," + username + "!" )
6 
7 greet_user('python')

打印結果:

hello,python!

 

2、形參與實參

什么是形參?顧名思義,形參就是形式上的參數,可以理解為數學的X,沒有實際的值,通過別人賦值后才有意義。相當於變量。

什么是實參?顧名思義,實參就是實際意義上的參數,是一個實際存在的參數,可以是字符串或是數字等。

 

以上面的例子介紹下什么是形參和實參:

就是在函數名中定義一個形參,然后在函數調用的時候,給函數名中的形參傳遞一個實際的參數,這個就變為實參。這樣的話執行函數體內容時就會執行對應的操作。

注意:傳入實參時,一定要加上引號,否則會報錯。

greet_user(python)
NameError: name 'python' is not defined

 

3、傳遞實參(位置實參、關鍵字實參、默認值、等效的函數調用、避免參數錯誤)

使用背景:

函數定義中可能包含多個實參,而向函數傳遞實參的方式有很多,位置實參和關鍵字實參等。

3.1、位置實參

調用函數時,必須將函數調用中的每個實參都關聯到函數定義中的一個形參。關聯方式是基於實參的順序,這被稱作位置實參

1 #位置實參
2 def describe_pet(animal_type,pet_name):
3     """顯示寵物信息"""
4     print("\nI have a " + animal_type + ".")
5     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
6 
7 describe_pet('dog','harry')

執行結果:

I have a dog.
My dog's name is Harry.

3.1.1 可以多次調用函數

 1 def describe_pet(animal_type,pet_name):
 2     """顯示寵物信息"""
 3     print("\nI have a " + animal_type + ".")
 4     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
 5 
 6 describe_pet('dog','harry')
 7 
 8 #可以多次調用
 9 describe_pet("cat",'coo')
10 describe_pet('pig','echo')

執行結果:

1 I have a dog.
2 My dog's name is Harry.
3 
4 I have a cat.
5 My cat's name is Coo.
6 
7 I have a pig.
8 My pig's name is Echo.

3.1.2 實參的位置也很重要,本末倒置可不好

describe_pet('coo','dog')

執行結果:

I have a coo.
My coo's name is Dog.

3.2、關鍵字參數

關鍵字實參 是傳遞給函數的名稱:值對。直接將形參與實參關聯起來,這樣就不存在順序問題(不會像上一個例子一樣出現搞笑的結果)。

示例:

1 2、關鍵字實參
2 def describe_pet(animal_type,pet_name):
3     """顯示寵物信息"""
4     print("\n關鍵字實參示例:")
5     print("I have a " + animal_type + ".")
6     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
7 
8 describe_pet(animal_type="dog",pet_name="harry")

執行結果:

關鍵字實參示例:
I have a dog.
My dog's name is Harry.

3.3、默認值參數

 

在編寫函數時,可以給每個形參設定一個固定值,即為默認值。

在調用函數給形參提供實參時,就使用實參值,否則,使用實參的默認值,因此,給形參指定默認值后,在函數調用中省略相應的實參。

1 #默認值參數
2 def describe_pet(pet_name,animal_type = 'dog'):
3     """顯示寵物信息"""
4     print("\n關鍵字實參示例:")
5     print("I have a " + animal_type + ".")
6     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
7 
8 describe_pet(pet_name="harry")

執行結果:

1 默認值實參示例:
2 I have a dog.
3 My dog's name is Harry.

注意點:這里把pet_name 放在了前面,原因是在這里還是把它當做是位置參數,如果形參與實參的位置不對應,還是會報錯

如果不想使用默認值參數,也可以在調用函數時,將形參定義一個值,這樣函數名中的形參默認值就會被忽略。

1 describe_pet(animal_type="cat",pet_name="harry")

 

3.4、等效的函數調用

什么叫等效的函數調用,即在函數調用時,無論是使用位置參數還是關鍵字參數、默認值參數、等到的結果都是一樣的,這樣的方式就是等效調用。

示例:

1 #函數等效調用
2 #一個名為harry 的小狗
3 def describe_pet(pet_name,animal_type = 'dog'):
4 describe_pet(pet_name="harry")
5 describe_pet("harry")

 

3.5、避免實參錯誤

意思就是在進行參數調用時,要給形參傳一定的實參。否則會報

 

 

最后,歡迎關注我的公眾號,這里分享Python/Java技術,自動化、以及認知感悟。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM