显然
方法一
if var in ['string one', 'string two']:
do_something()
比 Pythonic 更多:
方法二
if var == 'stringone' or var == 'stringtwo':
dosomething()
为什么方法 1 被认为比方法 2 更 Pythonic?
显然
方法一
if var in ['string one', 'string two']:
do_something()
比 Pythonic 更多:
方法二
if var == 'stringone' or var == 'stringtwo':
dosomething()
为什么方法 1 被认为比方法 2 更 Pythonic?
成为 Pythonic 就是将 Python 构造和数据结构与干净、易读的习语一起使用。
简单地说,第一个比第二个更容易阅读——它的样板更少,开销也比第一个少。任何 Python 程序员都可以查看第一个并看到有一个正在检查的内容列表,它读起来更像是简单的英语而不是第二个。考虑是否扩展了要检查的内容列表 - 第一个示例如下所示:
if var in ['string one', 'string two', 'string three']:
# If var is one of string one, string two, or string three.
do_something()
而第二个听起来像:
if var == 'stringone' or var == 'stringtwo' or var == stringthree:
# If var is equal to stringone, or var is equal to stringtwo, or var is equal to stringthree.
dosomething()
将第一种方法扩展到更多字符串更容易:
if var in ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']:
第二种方法很快变得笨拙:
if var == 'one' or var == 'two' or var == 'three' or ...:
此外,第一种方法可用于测试函数调用的返回值,并且只计算一次:
if bigCalculation() in ['one', 'two', 'three']:
第二种方法必须每次都重新评估调用,导致性能更差(特别是如果调用计算量很大)。
if bigCalculation() == 'one' or bigCalculation() == 'two' or ...: