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

首頁 > 編程 > Python > 正文

淺析Python中return和finally共同挖的坑

2020-02-16 02:06:00
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了在Python中return和finally共同存在的坑,以及填坑經驗,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

初識 return

相信每一個用過Python函數的童鞋, 肯定會用過return語句, return顧名思義, 就是用來返回值給調用者, 例如:

def test(): a = 2 return as = test()print s# 輸出結果2

對于上面的結果, 相信大家都不會感到意外, 那么加大點難度, 如果在return語句還有代碼呢? 那句代碼會怎樣呢?

def test(): a = 2 return a s = 3 print ss = test()print s# 結果是什么?

老司機肯定一眼就能看出結果, 但是對于尚在入門或者對return不很了解的童鞋, 可能就會懵逼了~ 后面的兩句代碼是否會被執行?

答案是: 不會執行

return正如它的名字那樣, 當執行這句代碼, 整個函數都會返回, 整個調用就算結束了~ 所以在return后面的代碼, 都是不會被執行的!

也正因為這個特性, 所以有種編碼規范叫early return的編碼規范就被倡導

它的意思大概就是: 當條件已經滿足返回時, 就馬上返回

舉個例子來說明:

def test(): a = 2 if a > 2:  result = 'more than' else:  result = 'less than' return results = test()print s

上面的代碼應該比較容易理解, 就是根據a的值, 來決定返回的result是什么. 這樣的編碼相信也是大部分童鞋喜歡用的, 因為這樣比較符合我們直覺, 然而, 這樣寫似乎有點浪費, 因為當第一個判斷結束了, 如果結果為真, 就應該返回more than, 然后結束函數, 否則肯定就是返回less than, 所以我們可以把代碼調整成這樣:

def test(): a = 2 if a > 2:  return 'more than' else:  return 'less than's = test()print s

甚至是:

def test(): a = 2 if a > 2:  return 'more than' return 'less than's = test()print s

結果都是和第一個寫法是一樣的! 第一次看到這樣寫法的童鞋, 可能會覺得比較難以接受, 甚至覺得可讀性很差, 但是其實這樣的寫法, 我覺得反而會稍微好點. 因為:

運行的代碼數少了, 調用方能更快得到結果 有利于減少嵌套的層數, 便于理解.

對于第2點在這需要解釋下, 很多時候我們寫得代碼, 嵌套很深, 都是因為if/else的鍋, 因為嵌套的if/else 比較多, 所以導致一堆代碼都嵌套得比較深, 這樣對于其他小伙伴, 簡直就是災難, 因為他們很可能在閱讀這部分代碼時, 就忘了前面的邏輯....
為了更加容易理解, 舉個代碼例子:

def test(): a = 2 if a > 2:  result = 'not 2' else:  a += 2  if a < 2:   result = 'not 2'  else:   for i in range(2):    print 'test ~'   result = 'Target !' return results = test()print s# 輸出結果test ~test ~Target !            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭市| 沛县| 大邑县| 象山县| 平顶山市| 会东县| 三门县| 江门市| 奈曼旗| 蓬溪县| 永城市| 博客| 安吉县| 华蓥市| 黔南| 肥东县| 九台市| 丽江市| 北安市| 大理市| 弥渡县| 罗定市| 九江县| 四子王旗| 白沙| 报价| 眉山市| 同江市| 波密县| 广饶县| 宜兰市| 犍为县| 安西县| 元谋县| 吴忠市| 阿坝| 永胜县| 许昌市| 丽水市| 轮台县| 太康县|