自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
提到函數,大家會想到數學函數吧,函數是數學最重要的一個模塊,貫穿整個數學學習過程。在Python中,函數的應用非常廣泛。在前面我們已經多次接觸過函數。例如,用于輸出的print()函數、用于輸入的input()函數及用于生成一系列整數的range()函數,這些都是Python內置的標準函數,可以直接使用。除了可以直接使用的標準函數外,Python還支持自定義函數。即通過將一段有規律的、重復的代碼定義為函數,來達到一次編寫、多次調用的目的。使用函數可以提高代碼的重復利用率。
1??創建一個函數
創建函數也稱為定義函數,可以理解為創建一個具有某種用途的工具。使用def關鍵字實現,具體的語法格式如下:
def functionname([parameterlist]):
??? ['''comments''']
??? [functionbody]
參數說明:
l??functionname:函數名稱,在調用函數時使用。
l??parameterlist:可選參數,用于指定向函數中傳遞的參數。如果有多個參數,各參數間使用逗號“,”分隔。如果不指定,則表示該函數沒有參數,在調用時也不指定參數。
注意:即使函數沒有參數,也必須保留一對空的“()”,否則將顯示如圖1所示的錯誤提示對話框。
圖1??語法錯誤對話框
l??'''comments''':可選參數,表示為函數指定注釋,注釋的內容通常是說明該函數的功能、要傳遞的參數的作用等,可以為用戶提供友好提示和幫助的內容。
說明:在定義函數時,如果指定了'''comments'''參數,那么在調用函數時,輸入函數名稱及左側的小括號時,就會顯示該函數的幫助信息,如圖2所示。這些幫助信息就是通過定義的注釋提供的。
圖2??調用函數時顯示友好提示
注意:如果在輸入函數名和左側括號后,沒有顯示友好提示,那么就檢查函數本身是否有誤,檢查方法可以是在未調用該方法時,先按下快捷鍵<F5>執行一遍代碼。
l??functionbody:可選參數,用于指定函數體,即該函數被調用后,要執行的功能代碼。如果函數有返回值,可以使用return語句返回。
注意:函數體“functionbody”和注釋“'''comments'''”相對于def關鍵字必須保持一定的縮進。
說明:如果想定義一個什么也不做的空函數,可以使用pass語句作為占位符。
例如,定義一個過濾危險字符的函數filterchar(),代碼如下:
def?filterchar(string):
????'''功能:過濾危險字符(如黑客),并將過濾后的結果輸出
?????? about:要過濾的字符串
???????沒有返回值
?????? '''
????import?re???????????????????????????????????????#?導入Python的re模塊
????pattern =?r'(黑客)|(抓包)|(監聽)|(Trojan)'??????#?模式字符串
????sub = re.sub(pattern,?'@_@', string)???????????#?進行模式替換
????print(sub)
運行上面的代碼,將不顯示任何內容,也不會拋出異常,因為filterchar()函數還沒有被調用。
2??調用函數
調用函數也就是執行函數。如果把創建的函數理解為創建一個具有某種用途的工具,那么調用函數就相當于使用該工具。調用函數的基本語法格式如下:
functionname([parametersvalue])
參數說明:
l??functionname:函數名稱,要調用的函數名稱必須是已經創建好的。
l??parametersvalue:可選參數,用于指定各個參數的值。如果需要傳遞多個參數值,則各參數值間使用逗號“,”分隔。如果該函數沒有參數,則直接寫一對小括號即可。
例如,調用在6.1.1小節創建的filterchar()函數,可以使用下面的代碼:
about =?'我是一名程序員,喜歡看黑客方面的圖書,想研究一下Trojan。'
filterchar(about)
調用filterchar()函數后,將顯示如圖3所示的結果。
圖3??調用filterchar()函數的結果
場景模擬:第4章的實例01實現了每日一帖功能,但是這段代碼只能執行一次,如果想要再次輸出,還需要再重新寫一遍。如果把這段代碼定義為一個函數,那么就可以多次顯示每日一帖了。
??實例01??輸出每日一帖(共享版)
在IDLE中創建一個名稱為function_tips.py的文件,然后在該文件中創建一個名稱為function_tips的函數,在該函數中,從勵志文字列表中獲取一條勵志文字并輸出,最后再調用函數function_tips(),代碼如下:
def?function_tips():
????'''功能:每天輸出一條勵志文字
??? '''
????import?datetime?????????????????????????????????????#?導入日期時間類
??? #?定義一個列表
????mot = ["今天星期一:\n堅持下去不是因為我很堅強,而是因為我別無選擇",
???????????"今天星期二:\n含淚播種的人一定能笑著收獲",
???????????"今天星期三:\n做對的事情比把事情做對重要",
???????????"今天星期四:\n命運給予我們的不是失望之酒,而是機會之杯",
???????????"今天星期五:\n不要等到明天,明天太遙遠,今天就行動",
???????????"今天星期六:\n求知若饑,虛心若愚",
???????????"今天星期日:\n成功將屬于那些從不說“不可能”的人"]
??? day = datetime.datetime.now().weekday()???????????#?獲取當前星期
????print(mot[day])????????????????????????????????????#?輸出每日一帖
# *****************************調用函數***********************************#
function_tips()???????????????????????????????????????#?調用函數
運行結果如圖4所示。
圖4??調用函數輸出每日一帖