最近在看程序的时候,发现了namedtuple,不太熟悉,记录一下。
Conv = namedtuple('Conv', ['kernel', 'stride', 'depth', 'ratio'])
DepthwiseConv = namedtuple('DepthwiseConv', ['kernel', 'stride', 'depth', 'ratio'])
InvResBlock = namedtuple('InvResBlock', ['kernel', 'stride', 'depth', 'ratio', 'repeate'])
Python中的tuple可以存储一个Python对象序列。与list不同的是,不能改变tuple中元素的值。tuple的元素可以通过索引进行访问:
Tuple还有一个兄弟,叫namedtuple。虽然都是tuple,但是功能更为强大。对于namedtuple,你不必再通过索引值进行访问,你可以把它看做一个字典通过名字进行访问,只不过还是不能改变其中的值。
为了构造一个namedtuple需要两个参数,分别是tuple的名字和其中域的名字。比如在上例中,tuple的名字是“Animal”,它包括三个域,分别是“name”、“age”和“type”。
Namedtuple比普通tuple具有更好的可读性,可以使代码更易于维护。同时与字典相比,又更加的轻量和高效。但是有一点需要注意,就是namedtuple中的属性都是不可变的。任何尝试改变其属性值的操作都是非法的。
Namedtuple还有一个非常好的一点是,它与tuple是完全兼容的。也就是说,我们依然可以用索引去访问一个namedtuple。
个人认为,在程序中使用namedtuple可以方便的实现参数的设置与调用。
参考:https://baijiahao.baidu.com/s?id=1613589944704758634&wfr=spider&for=pc