1.函式定義
Python使用關鍵字def來定義函式,語法為:
def function_name(param1,param2):
"""檔案字串"""
函式體
栗子:
def greet_user():
"""顯示簡單的問候語"""
print("Hello!")
檔案字串用于描述函式做了什么,
1.1 向函式傳遞引數
現對函式做簡單的修改,讓函式不只會顯示hello,
def greet_user(username):
"""顯示簡單的問候語"""
print("Hello!" + username + ".")
呼叫函式:
greet_user("Jack")
輸出:
Hello!Jack
1.1.1 實參和形參
在函式greet_user()的定義中,變數username是一個形參–函式完成其作業所需要的一項資訊,
在代碼greet_user(‘Jack’)中,'Jack’是一個實參,實參是呼叫函式時傳遞給函式的資訊,當呼叫函式時,將要讓函式使用的資訊放在括號內,
在greet_user(‘Jack’)中,將實參’Jack’傳遞給函式greet_user(),這個值被存盤在形參username中,
1.2 傳遞實參
函式定義中可能包含多個形參,因此也可能包含多個實參,向函式傳遞實參的方式很多:
可以使用位置實參,這要求實參的順序與形參的順序相同,
可以是使用關鍵字實參,其中每個實參都由變數名和值組成,
還可以使用串列和字典,
1.2.1 位置實參
呼叫函式時,Python必須將函式呼叫的每個實參都關聯到函式定義中的一個形參,這就要求實參的順序與形參的順序要一致,
下面來看一個顯示寵物資訊的函式,
def describe_pet(animal_type,pets_name):
"""顯示寵物資訊"""
print("I have a " + animal_type + "!")
print("its name was " + pets_name + ".")
呼叫函式:
describe_pet("dog","哈哈")
輸出:
I have a dog!
its name was 哈哈.
位置實參的順序很重要,如果實參放錯了順序將會導致違背我們預期的結果:
def describe_pet(animal_type,pets_name):
"""顯示寵物資訊"""
print("I have a " + animal_type + "!")
print("its name was " + pets_name + ".")
呼叫函式:
describe_pet("哈哈","dog")
輸出:
I have a 哈哈!
its name was dog.
1.2.2 關鍵字實參
關鍵之實參是傳遞給函式的名稱-值對,直接在實參中將名稱和值關聯起來,無需考慮傳遞的實參的順序,
就上面的例子使用關鍵字實參:
def describe_pet(animal_type,pets_name):
"""顯示寵物資訊"""
print("I have a " + animal_type + "!")
print("its name was " + pets_name + ".")
呼叫函式:
describe_pet(animal_type = "dog",pets_name = "哈哈")
輸出:
I have a dog!
its name was 哈哈.
1.2.3 默認值
撰寫函式時,可以給每個形參都設定默認值,在呼叫函式時,如果給函式中的形參指定了實參,Python就會使用指定的實參,如果不指定的話就會使用默認的形參,
還是對寵物的例子,我們修改一下形參的順序,將animal_type放在第二個形參的位置:
def describe_pet(pets_name,animal_type=“dog”):
"""顯示寵物資訊"""
print("I have a " + animal_type + "!")
print("its name was " + pets_name + ".")
呼叫函式:
describe_pet(“哈哈”)
輸出:
I have a dog!
its name was 哈哈.
上面代碼中已經給animal_type指定了默認值’dog’,所以在函式呼叫的時候,如果animal_type是’dog’的話,就不要指定實參了,在呼叫函式的時候,只指定了一個實參’哈哈’,但是這個實參還是位置實參,也就是關聯到pets_name,這也就是為什么將默認值animal_type放在后面的原因,
1.2.4 避免實參錯誤
在使用函式后,如果提供的實參多出或者少于形參都會導致錯誤:
# 避免實參錯誤
def describe_pet(animal_type, pet_name):
"""describe_pet imformation"""
print("I have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
呼叫函式:
describe_pet()
由于沒有給函式傳遞實際引數,所以程式報錯:
Traceback (most recent call last):
File "C:/Users/ASUS/PycharmProjects/Test_Program/Note.py", line 8, in <module>
describe_pet()
TypeError: describe_pet() missing 2 required positional arguments: 'animal_type' and 'pet_name'
報錯解讀:
TypeError: describe_pet() missing 2 required positional arguments: 'animal_type' and 'pet_name'
程式提示呼叫函式時缺少2個位置引數,分別是“animal_type”和“pet_name”,
1.3 回傳值
函式并不是總是直接顯示輸出,相反,它可以處理一些資料,回傳一個或者一組值,函式回傳的值被稱為回傳值,在函式中,可以使用return陳述句將值回傳到呼叫函式的代碼行,
1.3.1 回傳簡單值
下面是一個回傳完整姓名的函式,注意:英語的first_name是中文姓名里面的名,last_name是姓,
def get_formatted_name(first_name, last_name):
"""return_formatted_name"""
full_name = first_name + " " + last_name
return full_name.title()
呼叫函式:
musician = get_formatted_name("ma", "jack")
print(musician)
輸出:
Ma Jack
呼叫回傳值的函式時,需要提供一個變數,用于存盤回傳的值,在這里,回傳的值存盤在了變數musician中,
1.3.2 讓實參變成可選的
擴展上面的函式,讓這個函式還可以處理帶有中間名的姓名:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/179969.html
標籤:其他
