我目前正在阅读《 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)
我在代码中不理解的行是定义点的第二行。感谢您的阅读和任何帮助。
答案 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,则必须分配为空列表。