'variable' or 'variable is not None'
1 | Variable = None |
在特定的情况下,这三者之间有什么区别吗?如果没有区别,哪一个更适合使用?
1 2 | if Variable: print"Hello world" |
和
1 2 | if Variable is not None: print"Hello world" |
和
1 2 | if Variable != None: print"Hello world" |
在没有变量的情况下是相同的吗?
Is there any difference between these three in a specific scenario ?
第一问是什么falsy是否可变。这个测试将失败的所有事物的种类
第二个要求是它的神奇
第三问,这是什么东西
1 2 3 4 | class Stupid(object): def __ne__(self, other): return False Variable = Stupid() |
最后一个是有用的,在极少;事实上,如果你不认为你可能需要检查或
if there is no difference which one is more suitable to use?
嗯,有一个更差的是合适的,它取决于在特定的使用。
在结束的时候,似乎有可能是什么样,你要在任何特定的情况下,差分
*有一个表演的第一个差分
如果是真的
编辑:
这一实践的重要性时,你要检查,如果变量是真集到适当的值。你可以跑不成问题。例如,如果你要来评价项目的列表:
1 | if not x: |
如果该列表是提供给检查的条件,然后将触发在一个空的列表,还可以是一个有效的输入。这是操作系统中的案例,你喜欢与D检查
1 | if x is not None: |
允许空输入列表的有效性的检查,但仍然是在所有的情况下,提供的列表。
在这样的值是可比的
1 2 3 4 5 6 | >>> def foo(): ... pass ... >>> x = foo() >>> x is None True |
它也经常被使用的变量的默认值是可选的。
1 2 3 4 5 6 7 8 9 10 | >>> def foo(bar=None): ... if bar is None: ... print('No argument passed.') ... else: ... print('Variable bar: %s' % str(bar)) ... >>> foo(0) Variable bar: 0 >>> foo() No argument passed. |
这样,
官方的建议是,PEP 8不安的身份检查和测试:
1 2 | if Variable is not None: print"Hello world" |
不等式的等式/测试还将工作,但将是慢的和非idiomatic:
1 2 | if Variable != None: print"Hello world" |
布尔变量的测试值的produces不同的结果。下面的测试将打印"Hello World"为一个空的容器,如果变量或数等于零:
1 2 3 4 | # Hello world won't print for any of these values: for Variable in (), '', u'', {}, [], 0, 0.0, 0j, None: if Variable: print"Hello world" |
他们是不同的。如果
EG。
1 2 3 4 5 6 | >>> not '' True >>> not 'abc' False >>> not 0 True |
如果x是一