我正在查看列出的代码here,它们为用Python在线编写“时钟”提供了一个非常有趣的结构。我以前从未见过这种奇怪的语法,我也不知道它是如何工作的。这完全是Python的黑魔法。但即使这不是写作者意图的最具Python风格的方式,我还是想知道它是如何运作的。你知道吗
qClock = (lambda:0, time.clock)[qDuration > 0]
qDuration = (1, (qClock() + qDuration))[qDuration > 0]
我的思考过程:
qClock
如果持续时间已过,则返回TrueqDurration
以int开头,但后来改为lambda函数?你知道吗
在Python中,
bool
是int
的子类,因此布尔值是0还是1取决于它是值False
还是True
。你知道吗因此,根据
qDuration
是否大于0,将qClock
设置为lambda: 0
或time.clock
。你知道吗qDuration
然后设置为1
或qClock() + qDuration
。你知道吗您可以将其转换为:
它更简短,可读性更强。想想看。你知道吗
这是一种写三元条件句的古老方法。应该是:
在python2.5引入三元条件(link)之前,您可以通过创建一个2元素元组并用布尔表达式索引来模拟它,因为
False
被视为0
,而True
被视为1
。你知道吗相关问题 更多 >
编程相关推荐