我不确定这是一个自以为是的问题,还是我误解了“隐式”和“显式”在Python上下文中的真正含义
a = []
# my understanding is that this is implicit
if not a:
print("list is empty")
# my understanding is that this is explicit
if len(a) == 0:
print("list is empty")
我试图遵循Python的禅宗法则,但我很好奇这是否适用于这种情况,或者我是否考虑过度了?谢谢你给我的指导
Tags:
试着想想:
以下简称:
我不认为这是一个很好的例子,说明Python的禅宗规则“显式”优于“隐式”。这主要是因为可读性。这并不是说第二个是坏的,另一个是好的。只是第一个比较熟练。如果你理解Python中列表的布尔性质,我想你会发现第一个在Python中更具可读性和可读性
这两个语句具有非常不同的语义。请记住,Python是动态类型的
对于
a = []
的情况,not a
和len(a) == 0
都是等价的。一个有效的替代方法可能是检查not len(a)
。在某些情况下,您甚至可能希望通过执行a == []
来检查空性和无精打采性但是
a
可以是任何东西。例如,a = None
。检查not a
没有问题,将返回True
。但是len(a) == 0
一点也不好。相反,您将得到TypeError: object of type 'NoneType' has no len()
。这是一个完全有效的选项,但是if
语句做的事情非常不同,您必须选择您想要的(几乎)在Python中,所有东西都有
__bool__
方法,但不是所有东西都有__len__
。你必须根据情况决定使用哪一种。需要考虑的是:a
是否为序列李>if
语句在非序列上崩溃吗李>记住,让代码看起来漂亮是正确完成工作的第二位
相关问题 更多 >
编程相关推荐