国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

跟老齊學Python之傳說中的函數(shù)編寫條規(guī)

2020-02-23 06:03:46
字體:
供稿:網(wǎng)友

關于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項。特別聲明,這些事項不是我總結(jié)的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成了漢語,當然,是按照自己的視角翻譯的,里面也夾雜了一些自己的觀點。看官也可以理解為源于《Learning Python》但又有點兒不同。
 •函數(shù)具有獨立性。也就是常說的不要有太強的耦合性。要讓函數(shù)能夠獨立于外部的東西。參數(shù)和return語句就是實現(xiàn)這種獨立性的最好方法。
 •盡量不要使用全局變量,這也是讓函數(shù)具有低耦合度的方法。全局變量雖然進行了函數(shù)內(nèi)外通信,但是它強化了函數(shù)對外部的依賴,常常讓函數(shù)的修改和程序調(diào)試比較麻煩。
 •如果參數(shù)的對象是可變類型的數(shù)據(jù),在函數(shù)中,不要做對它的修改操作。當然,更多時候,參數(shù)傳入的最好是不可變的。
 •函數(shù)實現(xiàn)的功能和目標要單一化。每個函數(shù)的開頭,都要有簡短的一句話來說明本函數(shù)的功能和目標。
 •函數(shù)不要太大,能小則小,根據(jù)前一條的原則,功能目標單一,則代碼條數(shù)就小了。如果感覺有點大,看看能不能拆解開,分別為幾個函數(shù)。
 •不要修改另外一個模塊文件中的變量。這跟前面的道理是一樣的,目的是降低耦合性。
 
小試一下遞歸

對于在python中使用遞歸,我一項持謹慎態(tài)度,能不用就不用,為什么呢?一方面深恐自己學藝不精,另外,遞歸不僅消耗資源,而且很多時候速度也不如for循環(huán)快。

不過,做為程序員,遞歸還是需要了解的。這里就列舉一個簡單的例子。
代碼如下:
>>> def newsum(lst):
...     if not lst:
...         return 0
...     else:
...         return lst[0] + newsum(lst[1:])
...
>>> newsum([1,2,3])
6

 這是一個對list進行求和的函數(shù)(看官可能想到了,不是在python中有一個sum內(nèi)置函數(shù)來求和么?為什么要自己寫呢?是的,在實際的編程中,沒有必要自己寫,用sum就可以了。這里用這個例子,純粹是為了說明遞歸,沒有編程實踐的意義),當然,我沒有判斷傳給函數(shù)的參數(shù)是否為完全由數(shù)字組成的list,所以,如果輸入的list中字母,就會編程這樣了:
代碼如下:
>>> newsum([1,2,3,'q'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in newsum
  File "<stdin>", line 5, in newsum
  File "<stdin>", line 5, in newsum
  File "<stdin>", line 5, in newsum

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贡嘎县| 黔东| 皮山县| 鄂温| 库伦旗| 扎兰屯市| 伊春市| 米易县| 分宜县| 乌鲁木齐县| 溧阳市| 微山县| 会同县| 隆德县| 山阳县| 攀枝花市| 临湘市| 新密市| 大石桥市| 淮安市| 谢通门县| 铁岭市| 安阳市| 弥渡县| 福安市| 玛曲县| 逊克县| 武鸣县| 塔河县| 凉山| 黔南| 施秉县| 安宁市| 嘉兴市| 临汾市| 林周县| 娱乐| 桦川县| 周宁县| 中牟县| 呼玛县|