函數是帶名字的代碼塊,要執行函數定義的特定任務,可調用該函數。 需要在程式中多次執行同一項任務時,你無需反覆編寫完成該任務的代碼,而只需調用執行該任務的函數,通過使用函數,程式的編寫、閱讀、測試和修複都將更容易。主程式文件的組織更為有序 一、如何定義一個函數 使用關鍵字 def 來定義一個函數。 d ...
函數是帶名字的代碼塊,要執行函數定義的特定任務,可調用該函數。
需要在程式中多次執行同一項任務時,你無需反覆編寫完成該任務的代碼,而只需調用執行該任務的函數,
通過使用函數,程式的編寫、閱讀、測試和修複都將更容易。主程式文件的組織更為有序
一、如何定義一個函數
使用關鍵字 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類型。
實際運行結果: