python怎么将if和try一起用_在python中使用try vs if

你经常听到Python鼓励EAY风格(“更容易要求宽恕比许可”)在LBYL风格(“看你飞跃”之前)。对我来说,这是一个效率和可读性的问题。

在你的例子中(说,而不是返回一个列表或一个空字符串,函数是返回一个列表或None),如果你希望99%的时间结果将实际上包含一些可迭代的,我会使用try /除了方法。如果异常真的是例外,它会更快。如果结果没有超过50%的时间,那么使用if可能更好。

为了支持这一点与几个测量:

>>> import timeit

>>> timeit.timeit(setup="a=1;b=1", stmt="a/b") # no error checking

0.06379691968322732

>>> timeit.timeit(setup="a=1;b=1", stmt="try:\n a/b\nexcept ZeroDivisionError:\n pass")

0.0829463709378615

>>> timeit.timeit(setup="a=1;b=0", stmt="try:\n a/b\nexcept ZeroDivisionError:\n pass")

0.5070195056614466

>>> timeit.timeit(setup="a=1;b=1", stmt="if b!=0:\n a/b")

0.11940114974277094

>>> timeit.timeit(setup="a=1;b=0", stmt="if b!=0:\n a/b")

0.051202772912802175

所以,虽然if语句总是花费你,几乎可以免费设置一个try / except块。但是当一个异常实际发生时,成本要高得多。

道德:

>这是完全OK(和“pythonic”)使用try / except流控制,

>但是,当异常实际上是例外时,它是最有意义的。

从Python文档:

EAFP

Easier to ask for forgiveness than

permission. This common Python coding

style assumes the existence of valid

keys or attributes and catches

exceptions if the assumption proves

false. This clean and fast style is

characterized by the presence of many

try and except statements. The technique contrasts with the 07000 style common to many other languages such as C.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值