这些方法之间是否存在与实现相关的低级别(性能)?
# check if string is empty
# the preferred way it seems [1]
if string:
print string
else:
print "It's empty."
# versus [2]
if string is '':
# or [3]
if string == '':
Run Code Online (Sandbox Code Playgroud)
例如,在测试时None,我仍然发现它更具可读性和显性:
if some_var is not None:
Run Code Online (Sandbox Code Playgroud)
..代替..
if not some_var:
Run Code Online (Sandbox Code Playgroud)
if not some_var,至少对我来说,总是读"如果some_var不存在".
哪个更好用,有什么是正确的用例==,is和布尔测试?
永远不要is用于(价值)平等测试.仅用它来测试对象标识.它可能适用于示例if string is '',但这取决于实现,您不能依赖它.
>>> a = "hi"
>>> a is "hi"
True
>>> a = "hi there!"
>>> a is "hi there!"
False
Run Code Online (Sandbox Code Playgroud)
除此之外,使用任何最好地传达代码含义的东西.
我更喜欢短if string:,但if string != '':可能更明确.
然后再次if variable:对每种对象起作用,所以如果variable不限于一种类型,这比if variable != "" and variable != 0:等等更好.
扩展Tim Pietzcker的答案:
if string:
print string
Run Code Online (Sandbox Code Playgroud)
这将测试是否string为True.IE
>>> bool("")
False
>>> bool(None)
False
>>> bool("test")
True
Run Code Online (Sandbox Code Playgroud)
所以它不仅测试它是否为空,而且如果它是None空的.这可能会产生影响,具体取决于您如何对待None/清空.
| 归档时间: |
|
| 查看次数: |
12547 次 |
| 最近记录: |