Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一种方法如何比另一种方法更像蟒蛇?_Python - Fatal编程技术网

Python 一种方法如何比另一种方法更像蟒蛇?

Python 一种方法如何比另一种方法更像蟒蛇?,python,Python,显然 方法1 if var in ['string one', 'string two']: do_something() 更像是蟒蛇,而不是: 方法2 if var == 'stringone' or var == 'stringtwo': dosomething() 为什么方法1被认为比方法2更像蟒蛇 Pythonic就是使用Python构造和数据结构,并使用干净、可读的习惯用法 发件人: 简单地说,第一种方法比第二种方法更容易阅读——它比第一种方法具有更少的样板文件和更

显然

方法1

if var in ['string one', 'string two']:
    do_something()
更像是蟒蛇,而不是:

方法2

if var == 'stringone' or var == 'stringtwo':
    dosomething()
为什么方法1被认为比方法2更像蟒蛇

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']:
第二种方法每次都必须重新评估调用,从而导致性能下降(特别是在调用的计算代价很高的情况下)


非常感谢。现在这是有道理的谢谢你,你的回答在实践中是有意义的,它向我展示了第一种方法是如何更有效的。虽然它没有直接回答方法1比方法2更具python风格。无论如何谢谢你!你的答案与另一个答案相结合,可以很好地阅读并更好地理解这两种方法(另一种是Pythonic意义上的,而你的则是实际意义上的)。@Rahul Sharma:我认为它清楚地描述了为什么方法1比另一种更具Pythonic意义。
if bigCalculation() == 'one' or bigCalculation() == 'two' or ...: