您现在的位置是:亿华云 > 应用开发

Python 中的 EAFP 和 LBYL 代码风格到底是什么?

亿华云2025-10-02 21:10:07【应用开发】2人已围观

简介1. EAFP 风格Python 有一套自己的哲学,其中 EAFP 是其中比较有名的。它的全称是:Easier to Ask for Forgiveness than Permission

1. EAFP 风格

Python 有一套自己的代底哲学,其中 EAFP 是码风其中比较有名的。它的代底全称是:

Easier to Ask for Forgiveness than Permission

强行翻译一下,就是码风 寻求原谅比获得授权更容易。

对于第一次接触这个 EAFP 名词的代底同学,可能不好理解这句话的码风意思。

没有关系,代底咱先看一下 EAFP 风格的码风代码是什么样的,你就能立马 get 了。代底

下面这段代码,码风我在 try 里使用 [key] 的代底方法获取字典一个 value 值,但是码风由于 profile 并没有 age 的键。所以会抛出异常。代底

profile = { "name": "明哥"} try:     print(profile["age"]) except KeyError:     print("Key is not exist") 

像这种,码风先相信代码本身没有问题,代底任其执行,有问题了再通过捕获进行处理的代码风格,就叫做 EAFP 风格。

我个人把这种写法,亿华云计算称之为 面向崩溃编程。

2. LBYL 风格

LBYL 的全称是:

Look Before You Leap

翻译一下,就是 你跳之前先看看,这是一种比较保守的写法。这种写法可能会有让你写很多的 if 判断语句来规避可能出现错误的各种场景。

还是以上面的代码为例,使用 LBYL 风格来写的话,是这样的

profile = { "name": "明哥"} if "age" in profile:     print(profile["age"]) else:     print("Key is not exist") 

3. 选择哪种风格?

用一个生动的例子来描述他们的区别。

有一对小伙伴一起约去某名山游玩,由于这座山比较险峻,有各种各校的悬崖。

伙伴A,是一个比较大胆开放的人,他自己穿上了降落伞,所以在游玩的时候,服务器租用无所顾忌,都不看路,一旦不小心跌落悬崖了也有降落伞保命。 -- 这是 EAFP 风格

而伙伴B,是一个比较保守的人,他没有穿降落伞,所以每走一走都要看一看,前面是不是悬崖。-- 这是 LBLY 风格

EAFP虽然是 Python 比较推荐的一种编码风格,但更多情况下,这两种风格会同时存在于你的代码中代码风格的目的是增强代码的可读性和健壮性,在有些场景下 EAFP 风格更加易读,在有些场景下 LBLY 风格更加易读,因此不必纠结使用哪种风格,具体情况应该具体分析。

本文转载自微信公众号「Python编程时光」,可以通过以下二维码关注。转载本文请联系Python编程时光公众号。

很赞哦!(724)