首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >什么是Python 中的EAFP 哲学

什么是Python 中的EAFP 哲学

作者头像
青南
发布2020-09-03 16:46:40
发布2020-09-03 16:46:40
2K0
举报
文章被收录于专栏:未闻Code未闻Code

摄影:产品经理

产品经理心心念念的海胆水饺

Python 有一套自己的哲学,其中 EAFP 是其中比较有名的。它的全称是Easier to Ask for Forgiveness than Permission——寻求原谅比获得授权更容易

在开发的过程中,我们经常遇到需要多次判断的情况,比如说,使用 requests请求一个接口,首先要判断请求返回的HTTP Code是不是200,接下来要判断请求返回的数据是不是 JSON 格式,接下来要判断数据解析成字典以后,里面有没有某个字段:

代码语言:javascript
复制
import json
import requests

resp = requests.get('https://xxx.com/xxx')
if resp.status == 200:
    resp_text = resp.content.decode('utf-8')
    if resp_text.startswith('{'):
        resp_info = json.loads(resp_text)
        if 'data' in resp_info:
             data = resp_info['data']
             print(data)

这种写法,会带来大量的 if 判断。而且 if 嵌套也会导致代码很难看。

但是如果使用 EAFP 哲学来写代码,就变得非常简单了:

代码语言:javascript
复制
import requests

try:
    resp_info = requests.get('https://xxx.com/xxx').json()
    data = resp_info['data']
    print(data)
except Exception:
    print('请求失败')

EAFP 哲学让你在写代码的过程中,先假设条件成立。如果不成立,用 try…except 把异常捕获住即可。

与 EAFP 相对应的是 LBYL:Look Before You Leap——你跳之前先看看。这种开发风格一般适用于 C 语言。也就是在各种操作之前频繁用 if 先做检查。

当然,EAFP虽然是 Python 推荐的一种编码风格,但使用的时候还是需要看具体情况。我们日常生活中,经常听到某某渣男追女神一直追不上,于是直接把事情办了,再跪下来一边打自己脸,一边哭,一边求原谅。结果竟然有不少人能得到了原谅。所以说,EAFP 有用是有用,但是不应该在什么地方都用。

我之前有一批文章就特别讲到了,不应该滥用 try … except: 脱离苦海,从避免滥用try…except…开始

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档