谁能解释初始化mbr2的表达式?

class MyClass(object):
  def __init__(self, param1, param2=None):
    self.mbr1 = param1
    self.mbr2 = ({}, param2)[bool(param2)]


谢谢。

最佳答案

逻辑根据param1的真实性从元组中选择两个值之一。如果False元组的索引为0,否则为1;否则为1。布尔很容易被强制为整数。

使用三元运算符可以更清楚地表达它:

self.mbr2 = param2 if param2 else {}


或与or短路:

self.mbr2 = param2 or {}

关于python - 神秘的Python表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41573484/

10-09 20:20