函式是帶名字的代碼塊,要執行函式定義的特定任務,可呼叫該函式,
需要在程式中多次執行同一項任務時,你無需反復撰寫完成該任務的代碼,而只需呼叫執行該任務的函式,
通過使用函式,程式的撰寫、閱讀、測驗和修復都將更容易,主程式檔案的組織更為有序
一、如何定義一個函式
使用關鍵字 def 來定義一個函式,
def greeting_user(): print("Hello!,Welcome to Python World!") greeting_user()
如上述代碼:第一行定義一個函式greeting_user,第二行為函式的功能,即列印字串 "Hello!,Welcome to Python World!"
第三行,即呼叫函式greeting_user,作用就是列印字串,
1)向函式傳遞資訊
稍作修改,在函式定義 def greeting_user() 的括號內添加 username ,可讓函式接受所給定 username 指定的任何值,
這個函式就可以呼叫給 username 指定一個值,呼叫 greeting_user() 時,可將一個名字傳遞給它,如下所示:
def greeting_user(username): print("Hello!,Welcome "+ username.title() + " use Python programing language!")
greeting_user('Bush')
greeting_user('Jack')
greeting_user('Lucy')
代碼 greeting_user('Bush') 呼叫函式 greeting_user() ,并向它提供執行 print 陳述句所需的資訊,這個函式接受你傳遞給它的名字
2)實參和形參
前面定義函式 greeting_user() 時,要求給變數 username 指定一個值,呼叫這個函式并提供這種資訊(人名)時,它將列印相應的問候語,
在函式 greeting_user() 的定義中,變數 username 是一個形參—函式完成其作業所需的一項資訊,
在代碼 greeting_user('Bush') 中,值 'Bush'、‘Jack’、‘Lucy’ 是一個實參,實參是呼叫函式時傳遞給函式的資訊,
呼叫函式時,將要讓函式使用的資訊放在括號內,在greeting_user('Bush') 中,將實參'Bush' 傳遞給了函式 greeting_user() ,這個值被存盤在形參 username 中,
二、實參
1)位置實參
由于通常函式中,會存在多個形參,呼叫函式時,Python必須將函式呼叫中的每個實參都關聯到函式定義中的一個形參,為此,最簡單的關聯方式是基于實參的順序,這種關聯方式被稱為位置實參,
def my_pet(animal_type, pet_name): print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") my_pet('dog', 'Wangcai')
上述代碼中,my_pet()函式中存在兩個形參,即animal_type和pet_name,也就是在呼叫函式my_pet()時,需要2個引數,即在my_pet('dog', 'Wangcai')中,將‘dog’存入到animal_type中,‘Wangcai’存入到pet_name中,并在my_pet()中的兩個print陳述句中進行呼叫 ,
注意:使用位置實參來呼叫函式時,如果實參的順序不正確,結果會出錯,
2)關鍵字實參
關鍵字實參是傳遞給函式的名稱-值對,直接在實參中將名稱和值關聯起來,函式傳遞實參時不會混淆,關鍵字實參讓你無需考慮函式呼叫中的實參順序,還清楚地指出了函式呼叫中各個值的用途,
my_pet(animal_type='dog', pet_name='Wangcai') my_pet(pet_name='Xiaoqiang',animal_type='cockroach')
函式 my_pet() 還是原來那樣,但呼叫這個函式時,向Python明確地指出了各個實參對應的形參,注意:上述兩個形參位置改變,在賦值的情況下,不影響程式運行,
運行結果
I have a dog. My dog's name is Wangcai. I have a cockroach. My cockroach's name is Xiaoqiang.
3)默認值
撰寫函式時,可給每個形參指定默認值,如果在呼叫函式中給形參提供了實參,Python將使用指定的實參值;否則,將使用形參的默認值,因此,給形參指定默認值后,可在函式呼叫中省略相應的實參
def my_new_pet(new_pet_name,new_animal_type='dog'): print("\nI have a " + new_animal_type + ".") print("My " + new_animal_type + "'s name is " + new_pet_name.title() + ".") my_new_pet(new_pet_name='Wangcai') my_new_pet(new_pet_name='Xiaoqiang') my_new_pet(new_pet_name='Xiaoqiang',new_animal_type='cockroach')
運行結果:
I have a dog. My dog's name is Wangcai. I have a dog. My dog's name is Xiaoqiang. I have a cockroach. My cockroach's name is Xiaoqiang.
第一、二個my_new_pet()函式呼叫只給定了兩個名字,沒有給定動物型別,則函式采用默認型別‘dog’,第三個函式呼叫給定的new_animal_type='cockroach',則函式中兩個列印呼叫給定的cockroach型別,
實際運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458457.html
標籤:其他
下一篇:執行緒池
