语法说明:python中的方括号

时间:2019-10-29 13:00:33

标签: python if-statement conditional-statements

我目前正在阅读《 Dusty Phillips的Python 3面向对象编程》一书。在这本书中,我遇到了一个代码块,我很难理解,因为我以前从未见过使用它。 似乎在if else语句的末尾放置了方括号[]。

起初我以为它是在引用列表,但仍然想这样,但想了解语法的含义。 我试过谷歌搜索这个问题,以及通过堆栈溢出查看。我看到的每个示例或问题都在方括号内或正在初始化普通列表。

def __init__(self, points=None):
    points = points if points else []
    self.vertices = []
    for point in points:
        if isinstance(point, tuple):
            point = Point(*point)
        self.vertices.append(point)

我在代码中不理解的行是定义点的第二行。感谢您的阅读和任何帮助。

3 个答案:

答案 0 :(得分:3)

points = points if points else []

的简写
if points:
    points = points # points remains unchanged
else:
    points = []     # points is a new list

答案 1 :(得分:1)

这样思考: 您是否曾经创建过一个空列表?

# Like:
myList = list()
# Or:
myOtherList = []

您可以(或将)看到它们都是创建空列表的有效方法。

现在对于points = points if points else []行,这称为ternary condidtional operator。链接中的答案很好地解释了它们如何工作!简短的版本就像Cid的回答所说:它是完整的if / else语句块的缩写。

您在这里的具体情况基本上是这样的:

  

如果存在 points ,请使用 points 。否则使用[]

或者换句话说:

  

如果存在 points ,请使用 points 。否则请使用一个空列表

答案 2 :(得分:0)

[]仅表示空白列表。 第2行说points必须分配为参数points,如果参数points为None,则必须分配为空列表。