書籍:《Python編程:從入門到實踐》
打卡人:Owenli
打卡日期:2018.4.14
Python從入門到實踐目錄
- Python學習筆記之基本數據類型|第1篇
- Python學習筆記之列表|第2篇
- Python學習筆記之條件控制|第3篇
- Python學習筆記之字典|第4篇
- Python學習筆記之用戶輸入和While循環|第5篇
- Python學習筆記之函數|第6篇
- Python學習筆記之函數(續)|第7篇
- Python學習筆記之類|第8篇
- Python學習筆記之類(續)|第9篇
- Python學習筆記之文件和異常(上)|第10篇
- Python學習筆記之文件和異常(下)|第11篇
前言
本篇學習編寫函數。函數是帶名字的代碼塊,用于完成具體的工作。
函數讓程序的編寫、閱讀、測試和修復變的容易,極大提高了代碼的復用性。
本篇中,你還會學習向函數傳遞信息的方式。你將學習如何編寫主要任務是顯示信息的函數,還有用于處理數據并返回一個或一組值的函數。最后,你將學習如何 將函數存儲在被稱為模塊 的獨立文件中,讓主程序文件的組織更為有序。
一、定義函數
簡單的函數,定義greet_user()
:
這是一個最簡單基本的函數。
def
是Python
定義函數的關鍵字,greet_user
函數名,冒號后面的所有縮進行構成函數體。"""xxx"""
是文檔字符串的注釋。要使用函數只需指定函數名和括號中的必要信息即可。
我們可以給上面的函數添加一個參數username
。
通過修改上面
greet_user
添加一個參數,在調用函數時,將參數放在括號中傳入。
函數的參數username
是形參。在調用函數是傳遞的內容是實參。
二、傳遞實參
函數定義可能包含多個形參,因此函數調用中也可能包含多個實參。向函數傳遞實參的方式很多,例如:位置實參,實參和形參的順序相同。關鍵字實參,其中實參都由變量名和值組成。還有字典和列表等。
2.1 位置實參
位置實參:每個實參根據順序關聯一個形參。
舉個例子:
describe_pet('hanster', 'harry')
兩個實參分別對應def describe_pet(animal_type, animal_name):
中的形參。
describe_pet()
可以多次使用。
注意實參的順序不能改變。
2.2 關鍵字實參
關鍵字實參 是傳遞給函數的名稱-值對。直接將實參和形參關聯起來。
上邊例子看出,順序對關鍵字實參沒影響。
2.3 默認值
編寫函數時,可以給形參指定默認值。當調用函數提供實參時,使用指定的實參。否則,使用默認值。
你可能會遇到黃色框中問題。為
animal_type
指定了默認值。調用函數傳遞的實參被視為位置實參,默認的會指定給第一個形參,所以會報錯。
三、返回值
函數并非總是直接輸出值,它可以處理一些數據,并返回一個或一組值。return
語句將值返回到調用函數的代碼行。
例子:
函數中將
full_name
返回給調用者。調用函數時需要提供一個變量,來存儲返回的值。
函數可以返回任何類型的值,包括字典和列表等較復雜的數據結構。
四、傳遞列表
有時向函數傳遞列表很有用,通過將列表傳遞給函數,函數可以直接訪問內容。
將
usernames
作為參數傳遞給函數。
可以在函數中修改列表的值
在函數
print_models
修改completed_models
列表的值。列表的內容被永久性修改。
如何禁止函數修改列表,其實很簡單,只需要傳遞列表的副本給函數即可。 還記得list_name[:]
生成副本。
傳遞任意數量的實參
有時不知道需要接受多少個實參,Python
允許從調用語句中收集任意數量的實參。
在
Python
使用*toppings
創建一個空元組,并將接收到的所有值都封裝到這個元組中。
小結
本篇學習了函數的基本用法,如何定義一個函數、實參和形參、返回值、參數列表等。
打卡第六次