首页 > 编程语言 >【Python】 try except 还是 if else(EAFP 还是 LBYL 风格)

【Python】 try except 还是 if else(EAFP 还是 LBYL 风格)

时间:2022-12-14 19:24:36浏览次数:71  
标签:try Python LBYL 代码 except else EAFP

 

结论

● 若超过95%的可能不会进入except异常处理中,则使用代码一的样式(EAFP风格)

● 否则可以换成用代码二的样式(LBYL风格)

 

代码一(EAFP风格):

try:
    判断代码
except 错误:
    普通代码

 

代码二(LBYL风格):

if 判断代码:
    普通代码
else:
    普通代码

 

 


 

 

分析

众所周知,在Python中,自带的 try except 这种异常处理语句比较"重",也就是性能不太好

但是,官方却推荐使用 EAFP (Easier to Ask for Forgiveness than Permission) 代码编写风格,也就是官方推荐使用 try except

那为啥不使用 LBYL (Look Before You Leap) 编写风格呢,也就是为啥不直接用 if else 这种简单明了性能还OK的方式呢

 

事实上,try 的性能并不差,不仅不差,还非常好,完全优于 if else

但是 except 捕获异常非常消耗性能!

 

所以,

● 如果绝大多数情况下,不会进入异常处理分支的话,使用 try except 更好 EAFP

● 如果部分情况下,会进入异常处理分支,那么换不换无所谓,都是一个量级的时间消耗,谁也别瞧不起谁

● 如果大部分情况下,会进入异常处理分支,那么建议直接换成 if else LBYL

 

 


 

标签:try,Python,LBYL,代码,except,else,EAFP
From: https://www.cnblogs.com/Alan-LJP/p/16982996.html

相关文章

  • Python小球移动游戏
    #-*-coding:utf-8-*-importsys#导入sys模块importpygame#导入pygame模块pygame.init()#初始化pygamesize=width,height=640,480#设置窗口screen......
  • Python 12章 GUI
    GUI界面此处使用wxpython需要先pip库实例1importwxclassMyFrame(wx.Frame):def__init__(self,parent,id):wx.Frame.__init__(self,parent,id,tit......
  • Python实现从一个列表数据里随机抽取数据,并且按原有顺序排序
    背景:工作中需要实现从多个条件中随机抽取几个条件,进行组合查询的功能。而查询的结果需要按原顺序进行判断是否符合查询条件。分析:这些条件可以放在列表里,这就需要实现一个......
  • Python13 模块
    模块创建模块直接新建一个.py文件即可,这个py文件是可执行的哦~也是可以被导入的,这个py文件就是模块。导入模块import模块名[as别名]from模块名import函数/变......
  • Python第十一周
    一、实验目的和要求1、学会数据库编程接口;2、学会使用SQLite;3、学会使用MySQL。二、实验环境Python3.1064_bit三、实验过程实例一代码如下:1importsqlite3......
  • python实验报告(第8章)
    实例01:创建计算BMi指数的模块 创建一个用于根据身高、体重计算BMI指数的模块,命名为bmi.py,其中bmi为模块名,.py为扩展名。 代码如下:1deffun_bmi(pers......
  • Python实验报告(第9章)
    实例一:实验相关代码:defdivision():'''功能:分苹果'''print("\n==================分苹果了=================\n")apple=int(input("请输入苹......
  • Python调试工具
     Cyberbrain:Pythondebugging, redefined.https://github.com/laike9m/Cyberbrainhttps://github.com/cool-RR/PySnooper https://pythontutor.com/Pythontutor......
  • python3 安装 impyla
    pip3installsixbit_arraybitarraypip3installthriftpy==0.3.8pure-saslpip3installthrift-sasl==0.2.1--no-depspip3installimpyla==0.14.1如果出现异常pip3in......
  • Python3.9+Sqlite3
    python&sqlite简介Sqlite3作为Python内置的数据库,不需要再单独下载sqlite,直接import即可。使用python操作sqlite创建并连接数据库也可以把数据库名称指定为:memory:,这样......