文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 14:08

关注

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

Easier to Ask for Forgiveness than Permission

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

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

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

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

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

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

我个人把这种写法,称之为 面向崩溃编程。

2. LBYL 风格

LBYL 的全称是:

Look Before You Leap

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

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

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

3. 选择哪种风格?

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

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

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

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

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

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

 

来源:Python编程时光内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯