在尝试了解它的作用之前更改格式是个好主意:
def label(self, index, *args):
"""
Label each axes one at a time
args are of the form <label 1>,...,<label n>
APIPARAM: chxl
"""
self.data['labels'].append(
str( '%s:|%s' % \
( index, '|'.join( map( str,args ) ) )
).replace( 'None', '' )
)
return self.parent
所以:
它在列表中附加了一些东西self.data[ 'labels' ]
。我们知道这是因为append()
它是list object的一种方法。
这是一个字符串,例如:
- 字符串的形式是
xxx:|yyy
xxx
替换为参数的值index
yyy
被转换为字符串 () 的所有其他参数替换map(str,args)
并与|
字符 ( join(...)
) 连接,因此导致类似 ' a|b|None|c
'
- 上面字符串中的每次出现都
None
被替换为空字符串,并将其附加到列表中
编辑:
正如@abarnert 指出的那样,解释一下它*args
的含义以及为什么稍后将其用作可能会很好args
,所以就在这里。
*args
(这是一个星号 + 一个任意名称)表示“列表中进一步可用的任意数量的匿名参数args
”。也可以使用**kwargs
- 注意两个星号,用于接受关键字参数,即以foo = bar
wherefoo
是参数的名称并且bar
是它的值而不仅仅是. 的形式传递给函数的bar
。
如上所述args
andkwargs
是任意的,也可以使用*potatoes
or**potatoes
但使用args
andkwargs
是 Python 中的一种约定(有时人们也使用**kw
而不是**kwargs
,但含义是相同的——分别为任意数量的匿名参数和任意数量的关键字参数)。
如果事先不知道函数/方法应接受的参数数量,则使用两者 - 例如,考虑一个处理派对客人姓名的函数,人们可能不知道可能有多少,因此定义以下函数使得感觉:
def add_party_quests( *quests ):
for guest in quests:
do_some_processing( guest )
那么下面的两个调用都是有效的:
add_party_guests( 'John' )
add_party_guests( 'Beth', 'Tim', 'Fred' )
这也在此 SO 帖子中进行了解释:https ://stackoverflow.com/a/287101/680238