《Python編程:從入門到實(shí)踐》第八章 函數(shù)
定義函數(shù)
傳遞實(shí)參
返回值
傳遞列表
3D打印初版:
3D打印代碼重構(gòu)版:
傳遞任意數(shù)量的實(shí)參
將函數(shù)存儲(chǔ)在模塊中
函數(shù)編寫指南
應(yīng)給函數(shù)指定描述性名稱,且只在其中使用小寫字母和下劃線;
描述性名稱可幫助你和別人明白代碼想要做什么;
給模塊命名時(shí)也應(yīng)遵循上述約定;
每個(gè)函數(shù)都應(yīng)包含簡(jiǎn)要地闡述其功能的注釋,該注釋應(yīng)緊跟在函數(shù)定義后面,并采用文檔字符串格式;
文檔良好的函數(shù)讓其他程序員只需閱讀文檔字符串中的描述就能夠使用它:
他們完全可以相信代碼如描述的那樣運(yùn)行,
只要知道函數(shù)的名稱、需要的實(shí)參以及返回值的類型,就能在自己的程序中使用它;
給形參指定默認(rèn)值時(shí),等號(hào)兩邊不要有空格:
對(duì)于函數(shù)調(diào)用中的關(guān)鍵字實(shí)參,也應(yīng)遵循這種約定:
PEP 8(https://www.python.org/dev/peps/pep-0008/ )建議代碼行的長(zhǎng)度不要超過79字符,這樣只要編輯器窗口適中,就能看到整行代碼;
如果形參很多,導(dǎo)致函數(shù)定義的長(zhǎng)度超過了79字符,可在函數(shù)定義中輸入左括號(hào)后按回車鍵,并在下一行按兩次Tab鍵,從而將形參列表和只縮進(jìn)一層的函數(shù)體區(qū)分開來
如果程序或模塊包含多個(gè)函數(shù),可使用兩個(gè)空行將相鄰的函數(shù)分開,這樣將更容易知道前一個(gè)函數(shù)在什么地方結(jié)束,下一個(gè)函數(shù)從什么地方開始;
所有的?import 語句都應(yīng)放在文件開頭,唯一例外的情形是,在文件開頭使用了注釋來描述整個(gè)程序
小結(jié)
如何編寫函數(shù),以及如何傳遞實(shí)參,讓函數(shù)能夠訪問完成其工作所需的信息;
如何使用位置實(shí)參和關(guān)鍵字實(shí)參,以及如何接受任意數(shù)量的實(shí)參;
顯示輸出的函數(shù)和返回值的函數(shù);
如何將函數(shù)同列表、字典、if 語句和while 循環(huán)結(jié)合起來使用;
如何將函數(shù)存儲(chǔ)在被稱為 模塊 的獨(dú)立文件中,讓程序文件更簡(jiǎn)單、更易于理解;
學(xué)習(xí)了函數(shù)編寫指南,遵循這些指南可讓程序始終結(jié)構(gòu)良好,并對(duì)你和其他人來說易于閱讀;
程序員的目標(biāo)之一是,編寫簡(jiǎn)單的代碼來完成任務(wù),而函數(shù)有助于你實(shí)現(xiàn)這樣的目標(biāo);
它們讓你編寫好代碼塊并確定其能夠正確運(yùn)行后,就可置之不理;
確定函數(shù)能夠正確地完成其工作后,你就可以接著投身于下一個(gè)編碼任務(wù);
函數(shù)讓你編寫代碼一次后,想重用它們多少次就重用多少次;
需要運(yùn)行函數(shù)中的代碼時(shí),只需編寫一行函數(shù)調(diào)用代碼,就可讓函數(shù)完成其工作;
需要修改函數(shù)的行為時(shí),只需修改一個(gè)代碼塊,而所做的修改將影響調(diào)用這個(gè)函數(shù)的每個(gè)地方;
使用函數(shù)讓程序更容易閱讀,而良好的函數(shù)名概述了程序各個(gè)部分的作用;
相對(duì)于閱讀一系列的代碼塊,閱讀一系列函數(shù)調(diào)用讓你能夠更快地明白程序的作用;
函數(shù)還讓代碼更容易測(cè)試和調(diào)試;
如果程序使用一系列的函數(shù)來完成其任務(wù),而其中的每個(gè)函數(shù)都完成一項(xiàng)具體的工作,測(cè)試和維護(hù)起來將容易得多:
你可編寫分別調(diào)用每個(gè)函數(shù)的程序,并測(cè)試每個(gè)函數(shù)是否在它可能遇到的各種情形下都能正確地運(yùn)行;
經(jīng)過這樣的測(cè)試后你就能信心滿滿,深信你每次調(diào)用這些函數(shù)時(shí),它們都將正確地運(yùn)行