自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 中的 EAFP 和 LBYL 代碼風(fēng)格到底是什么?

開(kāi)發(fā) 后端
EAFP雖然是 Python 比較推薦的一種編碼風(fēng)格,但更多情況下,這兩種風(fēng)格會(huì)同時(shí)存在于你的代碼中代碼風(fēng)格的目的是增強(qiáng)代碼的可讀性和健壯性

1. EAFP 風(fēng)格

Python 有一套自己的哲學(xué),其中 EAFP 是其中比較有名的。它的全稱是:

Easier to Ask for Forgiveness than Permission

強(qiáng)行翻譯一下,就是 尋求原諒比獲得授權(quán)更容易。

對(duì)于第一次接觸這個(gè) EAFP 名詞的同學(xué),可能不好理解這句話的意思。

沒(méi)有關(guān)系,咱先看一下 EAFP 風(fēng)格的代碼是什么樣的,你就能立馬 get 了。

下面這段代碼,我在 try 里使用 [key] 的方法獲取字典一個(gè) value 值,但是由于 profile 并沒(méi)有 age 的鍵。所以會(huì)拋出異常。

  1. profile = {"name": "明哥"} 
  2. try: 
  3.     print(profile["age"]) 
  4. except KeyError: 
  5.     print("Key is not exist") 

像這種,先相信代碼本身沒(méi)有問(wèn)題,任其執(zhí)行,有問(wèn)題了再通過(guò)捕獲進(jìn)行處理的代碼風(fēng)格,就叫做 EAFP 風(fēng)格。

我個(gè)人把這種寫(xiě)法,稱之為 面向崩潰編程。

2. LBYL 風(fēng)格

LBYL 的全稱是:

Look Before You Leap

翻譯一下,就是 你跳之前先看看,這是一種比較保守的寫(xiě)法。這種寫(xiě)法可能會(huì)有讓你寫(xiě)很多的 if 判斷語(yǔ)句來(lái)規(guī)避可能出現(xiàn)錯(cuò)誤的各種場(chǎng)景。

還是以上面的代碼為例,使用 LBYL 風(fēng)格來(lái)寫(xiě)的話,是這樣的

  1. profile = {"name": "明哥"} 
  2. if "age" in profile: 
  3.     print(profile["age"]) 
  4. else: 
  5.     print("Key is not exist") 

3. 選擇哪種風(fēng)格?

用一個(gè)生動(dòng)的例子來(lái)描述他們的區(qū)別。

有一對(duì)小伙伴一起約去某名山游玩,由于這座山比較險(xiǎn)峻,有各種各校的懸崖。

伙伴A,是一個(gè)比較大膽開(kāi)放的人,他自己穿上了降落傘,所以在游玩的時(shí)候,無(wú)所顧忌,都不看路,一旦不小心跌落懸崖了也有降落傘保命。 -- 這是 EAFP 風(fēng)格

而伙伴B,是一個(gè)比較保守的人,他沒(méi)有穿降落傘,所以每走一走都要看一看,前面是不是懸崖。-- 這是 LBLY 風(fēng)格

EAFP雖然是 Python 比較推薦的一種編碼風(fēng)格,但更多情況下,這兩種風(fēng)格會(huì)同時(shí)存在于你的代碼中代碼風(fēng)格的目的是增強(qiáng)代碼的可讀性和健壯性,在有些場(chǎng)景下 EAFP 風(fēng)格更加易讀,在有些場(chǎng)景下 LBLY 風(fēng)格更加易讀,因此不必糾結(jié)使用哪種風(fēng)格,具體情況應(yīng)該具體分析。

本文轉(zhuǎn)載自微信公眾號(hào)「Python編程時(shí)光」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python編程時(shí)光公眾號(hào)。

 

責(zé)任編輯:趙寧寧 來(lái)源: Python編程時(shí)光
相關(guān)推薦

2009-06-09 22:11:44

JavaScriptObject

2023-10-11 08:29:54

volatileJava原子性

2023-03-29 08:24:46

Rune類(lèi)型開(kāi)源項(xiàng)目

2017-07-13 10:43:52

CNNmaxpool池化

2020-03-05 10:28:19

MySQLMRR磁盤(pán)讀

2022-10-08 00:00:00

Spring數(shù)據(jù)庫(kù)項(xiàng)目

2020-10-14 06:22:14

UWB技術(shù)感知

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2020-09-27 06:53:57

MavenCDNwrapper

2011-04-27 09:30:48

企業(yè)架構(gòu)

2012-09-03 09:58:09

2020-07-17 19:36:26

Python編程代碼

2019-10-30 10:13:15

區(qū)塊鏈技術(shù)支付寶

2020-08-04 14:20:20

數(shù)據(jù)湖Hadoop數(shù)據(jù)倉(cāng)庫(kù)

2013-06-09 09:47:31

.NetPDBPDB文件

2021-09-03 09:12:09

Linux中斷軟件

2010-04-22 14:14:29

Live-USB

2021-01-21 21:24:34

DevOps開(kāi)發(fā)工具

2023-07-12 15:32:49

人工智能AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)