目錄
一.函數說明
二.函數介紹
函數簡介
作用
函數分類
?三.自定義函數
定義函數
調用函數
pass關鍵字
定義一次執行多次
一.函數說明
Python中的函數是一個重要的編程概念,它允許編程者封裝代碼塊以實現特定的功能。函數的作用和應用場景非常廣泛,以下是一些關鍵點。
作用
1代碼重用:通過定義函數,可以避免重復編寫相同的代碼。這樣做不僅可以減少工作量,還可以使代碼更加組織化和可維護。
2模塊化:函數可以將復雜的問題分解為較小的、更易于管理和測試的部分。這可以提高代碼的可讀性和可維護性。
3抽象:函數允許從細節抽象出來,側重于高層次的操作。用戶可以不必關心函數的內部實現,只需了解其接口(輸入和輸出)。
4命名空間分隔:函數有助于在局部作用域中封裝變量,避免全局命名沖突,所以函數內的名稱不會和全局命名空間發生沖突。
應用場景
1數據處理:對數據執行清洗、轉換、計算等操作時,可以編寫函數來處理各種數據結構。
2任務自動化:常用于寫腳本來自動化日常任務,如文件處理、網絡請求等。
3API開發:在Web開發中,函數常用于定義API端點,處理HTTP請求和響應。
4數學計算:在科學計算或工程領域,函數可用于封裝數學方程或計算。
5用戶定義的操作:在面向對象編程中,函數(即方法)用于定義對象的行為。
6回調和事件驅動編程:在圖形用戶界面GUI編程或網絡編程中,函數作為回調對特定事件做出響應。
7測試和驗證:編寫自動化測試腳本時,函數可以用來封裝測試用例和斷言。
總的來說,在Python編程中,函數是代碼組織的基本單元,它在簡化代碼結構、提高代碼復用性和維護性方面發揮著重要作用。熟練使用函數可以極大提高編程效率和代碼質量。
二.函數介紹
函數簡介
函數:一個功能獨立的代碼塊
示例:
# 定義一個函數,能夠完成打印信息的功能
def print_info():print('------------------------------------')print(' 人生苦短,我用Python ')print('------------------------------------')
作用
函數在編程中是非常重要的一個知識點,大體功能如下
- 能夠將部分代碼劃分為一個整體的功能
- 只需定義函數1次就可以使用N次,可以大大減少了代碼的冗余
- 代碼看上去更加整潔美觀
示例一:未使用函數的情況
# 輸出第1遍 佛祖鎮樓
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖鎮樓 BUG辟易 ")
print(" 佛曰: ")
print(" 寫字樓里寫字間,寫字間里程序員; ")
print(" 程序人員寫程序,又拿程序換酒錢。 ")
print(" 酒醒只在網上坐,酒醉還來網下眠; ")
print(" 酒醉酒醒日復日,網上網下年復年。 ")
print(" 但愿老死電腦間,不愿鞠躬老板前; ")
print(" 奔馳寶馬貴者趣,公交自行程序員。 ")
print(" 別人笑我忒瘋癲,我笑自己命太賤; ")
print(" 不見滿街漂亮妹,哪個歸得程序員?")# 輸出第2遍 佛祖鎮樓
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖鎮樓 BUG辟易 ")
print(" 佛曰: ")
print(" 寫字樓里寫字間,寫字間里程序員; ")
print(" 程序人員寫程序,又拿程序換酒錢。 ")
print(" 酒醒只在網上坐,酒醉還來網下眠; ")
print(" 酒醉酒醒日復日,網上網下年復年。 ")
print(" 但愿老死電腦間,不愿鞠躬老板前; ")
print(" 奔馳寶馬貴者趣,公交自行程序員。 ")
print(" 別人笑我忒瘋癲,我笑自己命太賤; ")
print(" 不見滿街漂亮妹,哪個歸得程序員?")
示例二:使用函數的情況
# 定義一個函數,完成了獨立輸出"佛祖鎮樓"的功能
def print_fozu():print(" _ooOoo_ ")print(" o8888888o ")print(" 88 . 88 ")print(" (| -_- |) ")print(" O\\ = /O ")print(" ____/`---'\\____ ")print(" . ' \\| |// `. ")print(" / \\||| : |||// \\ ")print(" / _||||| -:- |||||- \\ ")print(" | | \\\\\\ - /// | | ")print(" | \\_| ''\\---/'' | | ")print(" \\ .-\\__ `-` ___/-. / ")print(" ___`. .' /--.--\\ `. . __ ")print(" ."" '< `.___\\_<|>_/___.' >'"". ")print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")print(" `=---=' ")print(" ")print(" ............................................. ")print(" 佛祖鎮樓 BUG辟易 ")print(" 佛曰: ")print(" 寫字樓里寫字間,寫字間里程序員; ")print(" 程序人員寫程序,又拿程序換酒錢。 ")print(" 酒醒只在網上坐,酒醉還來網下眠; ")print(" 酒醉酒醒日復日,網上網下年復年。 ")print(" 但愿老死電腦間,不愿鞠躬老板前; ")print(" 奔馳寶馬貴者趣,公交自行程序員。 ")print(" 別人笑我忒瘋癲,我笑自己命太賤; ")print(" 不見滿街漂亮妹,哪個歸得程序員?")# 調用2次函數,每次輸出1個佛祖鎮樓
print_fozu()
print_fozu()
函數分類
函數根據是否是自己編寫可以分為兩類
- 別人已經寫好拿來直接用的函數,成為包括Python內置函數或者第三方包中的函數,更省事
- 開發者自己編寫的函數(通常稱為自定義函數);根據需要自己編寫,更靈活
在整個函數相關知識學習中,我們主要以研究自定義函數為主,當自定義函數都弄明白了弄懂了,那么用別人的寫好的函數就信手拈來了
?三.自定義函數
上面的知識我們知道,函數就是一個獨立功能的代碼塊,想要用函數一定要掌握兩塊知識
- 定義函數(即怎樣制作函數)
- 調用函數(即怎樣使用函數)
下面我們就來研究函數的定義以及調用。
定義函數
定義函數的格式如下:
def 函數名(形參):函數體
說明:
- 函數名:一定有,按照命名規則起個名字,注意Python中建議使用小寫加下劃線的方式,例如print_info而不用PrintInfo
- 函數體:一定有,就是整個函數真正要執行的代碼,注意函數體前面縮進四個空格
- 形參:可有可無,專門用過來存儲調用時傳遞給函數的數據用的
示例代碼
下面定義一個函數,完成打印菜單的功能
def print_menu():print("-----------------------")print(" 歡迎光臨 ")print("數字1: 黃瓜炒肉")print("數字2: 冬瓜炒肉")print("數字3: 西瓜炒肉")print("數字4: 南瓜炒肉")print("數字5: 北瓜炒肉")print("-----------------------")
說明:
- 函數名:print_menu
- 函數體:第2~9行的代碼
- 形參:無
注意:定義了函數,這個函數不會被執行。就好比你發明了一個功能,這個功能不能自己用自己,必須等待別人使用才行,如果想讓函數執行,就需要調用函數。
調用函數
通俗的講:定義函數相當于打造了一個工具,調用函數相當于使用這個工具完成想要做的事情
調用函數的格式如下
函數名(實參)
說明:
- 函數名:一定有,想要調用的函數的名字
- 實參:可有可無,調用函數時給它傳遞的數據
注意:調用的函數的名字必須是先定義好的才能夠調用,否則會失敗
示例代碼
# 定義了一個函數,實現打印菜單功能
def print_menu():print("-----------------------")print(" 歡迎光臨 ")print("數字1: 黃瓜炒肉")print("數字2: 冬瓜炒肉")print("數字3: 西瓜炒肉")print("數字4: 南瓜炒肉")print("數字5: 北瓜炒肉")print("-----------------------")# 調用函數
print_menu()運行結果:
-----------------------歡迎光臨
數字1: 黃瓜炒肉
數字2: 冬瓜炒肉
數字3: 西瓜炒肉
數字4: 南瓜炒肉
數字5: 北瓜炒肉
-----------------------
說明:
- 函數定義一定要在函數的調用之前,其原因:Python解釋器在解析.py文件時會從文件的開頭開始解析,會先遇到函數的定義,然后當遇到函數的調用時就知道它在哪,所以函數要先定義才能調用
pass關鍵字
如果一個函數,暫時不確定函數體的代碼,可以用pass先占用位置,這樣即沒有語法錯誤,也能夠讓開發人員知道 這個函數功能沒有實現,可以在后面進行編寫
def 函數名():pass
示例:要定義4個函數,實現加減乘除的功能,但還不清楚具體功能怎樣寫,此時就可以用pass
# 定義了4個函數
def add_2_nums():passdef min_2_nums():passdef mult_2_nums():passdef div_2_nums():pass# 分別調用函數
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()
如果想清楚了具體的函數應該怎樣實現,那么把pass刪除,補上需要的代碼即可
# 定義了4個函數
def add_2_nums():print("接下來要進行加法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))def min_2_nums():print("接下來要進行減法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))def mult_2_nums():print("接下來要進行乘法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))def div_2_nums():print("接下來要進行除法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))# 分別調用函數
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()
注意:Python代碼規范中提到,定了多個函數,那么函數與函數之間空兩行
定義一次執行多次
一個函數可以進行多次調用,每次調用函數時,函數都會從頭開始執行,當這個函數中的代碼執行完畢后,意味著調用結束了
def test():num = 100num += 1print("在test函數中num=%d" % num)test()
test()運行結果:在test函數中num=101
在test函數中num=101
說明:
- 第7行調用了第一次test函數,當test函數結束后num為101
- 第8行調用了第二次test函數,依然會從test函數的開頭開始執行,所以結果依然是101