定義函數 1. 向函數傳遞參數 2. 實參和形參 函數定義時括弧中的變數稱之為形參,eg: username;函數調用時括弧中的值或變數成為實參,eg: 'ges'。 函數調用時將實參值傳遞給形參,運行函數體。 傳遞實參 1. 位置實參 函數調用時,將函數調用中的每個實參都關聯到函數定義中的一個形參 ...
定義函數
def greet_user(): print("Hello") greet_user() # PEP8 函數和類的定義後空兩行
1. 向函數傳遞參數
def greet_user(username): print("Hello, " + username.title() + "!") greet_user('ges')
2. 實參和形參
函數定義時括弧中的變數稱之為形參,eg: username;函數調用時括弧中的值或變數成為實參,eg: 'ges'。
函數調用時將實參值傳遞給形參,運行函數體。
傳遞實參
1. 位置實參
函數調用時,將函數調用中的每個實參都關聯到函數定義中的一個形參,基於實參順序的關聯方式——位置實參。
def describe_pet(animal_type, pet_name): print("\nI have a " + animal_type + '.') print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet('dog', 'pipi')
運行結果:
I have a dog. My dog's name is Pipi.
位置實參:函數調用時自動將從左往右的第一個實參傳遞給第一個形參,第二個實參傳遞給第二個形參,依次。。。
- 函數可以多次調用:為提高工作效率,定義一個函數之後,可以多次調用,只需使用不同的實參即可。
- 註意實參的順序:實參的順序應與形參的順序一致,不然會鬧出笑話。
2. 關鍵字實參
describe_pet(animal_type='dog', pet_name='pipi') describe_pet(pet_name='pipi', animal_type='dog')
上述兩條函數調用代碼的運行結果完全一樣。
傳遞給形參名稱-值對,函數調用時就無需考慮實參順序。
3. 預設值
def describe_pet(pet_name, animal_type='dog'): print("\nI have a " + animal_type + '.') print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet(pet_name='wangwang') # 使用預設值 describe_pet('wangwang') # 使用預設值 & 位置實參 describe_pet(pet_name='mimi', animal_type='cat') # 忽略形參的預設值,傳遞新的實參值
運行結果:
I have a dog. My dog's name is Wangwang. I have a dog. My dog's name is Wangwang. I have a cat. My cat's name is Mimi.
4. 等效函數調用
可混合使用位置實參、關鍵字實參和預設值,形成了多種運行結果一致的函數調用方式——簡稱等效函數調用。
5. 避免實參錯誤
def describe_pet(pet_name, animal_type): print("\nI have a " + animal_type + '.') print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet()
運行結果:
Traceback (most recent call last): File "C:\Users\yxf\Desktop\python_pycharm\test_def.py", line 6, in <module> describe_pet() TypeError: describe_pet() missing 2 required positional arguments: 'pet_name' and 'animal_type'
實參和形參不匹配時,運行報錯信息會有詳細信息,根據提示信息修改代碼即可。