声明的空列表作为传递值表示什么?

时间:2017-09-16 21:32:39

标签: python

enter image description here

根据我的理解,传递给 init 的inbound_nodes = []只声明一个空列表。因此,即使我创建了Node的子类,并且在该子类中调用此 init 函数而没有传递任何参数,__ init__函数仍然可以工作,因为它本身声明了一个空列表。

我是对的吗?

接下来的问题是,我们可以看到self.inbound_nodes = inbound_nodes。

这是否意味着,self.inbound_nodes也是一个空列表但在Node超类内?如果是这样,为什么我不能以相同的方式声明self.outbound_nodes?

最后一个问题是,最后一个for循环有什么作用?

1 个答案:

答案 0 :(得分:1)

不完全是。在函数定义中初始化参数时,它们仅执行一次。它将创建一个空列表,并将其用作默认参数。这意味着,使用默认参数初始化的所有对象都使用相同列表

def __init__(self, inbound=None):
        self.inbound = inbound or []

它是相同的列表对象。 那是因为函数参数只被评估一次。如果您希望每个对象都有自己的空列表,则应按如下方式定义init

{{1}}

关于循环,我不确定它是做什么的。