Python的语法错误

发布于 2021-01-29 15:03:44

我正在看这里列出的代码,它们提供了一个非常有趣的结构来在线用Python编写“时钟”。我以前从未见过这种古怪的语法,而且老实说,我不知道它是如何工作的。这在Python中是完全黑魔法。但是,即使这不是编写作者意图的最Python方式,我仍然想知道它是如何工作的。

qClock = (lambda:0, time.clock)[qDuration > 0]
qDuration = (1, (qClock() + qDuration))[qDuration > 0]

我的虽然过程:

  • qClock 如果持续时间已过,则返回True
  • qDurration 作为int开始,但后来更改为lambda函数?
  • 为什么每个清单的末尾都有清单?我觉得这些不是清单。
关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是一种编写三元条件的古老方法。它应该是:

    qClock = time.clock if qDuration > 0 else lambda: 0
    qDuration = (qClock() + qDuration) if qDuration > 0 else 1
    

    Python 2.5中,其引入的三元条件(前链路),你可以通过创建一个2元素的元组,并用一个布尔表达式索引它仿效它,由于False被作为经处理0True作为1



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看