何をするのかを理解する前に、フォーマットを変更することをお勧めします。
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()
のメソッドであるため、これを知っています。
これは次のような文字列です。
- 文字列の形式は
xxx:|yyy
xxx
引数の値に置き換えられますindex
yyy
文字列()に変換され、文字( map(str,args)
)で結合された他のすべての引数に置き換えられるため、結果は' 'のようになります。|
join(...)
a|b|None|c
- 上記の文字列に出現するすべて
None
の文字列は空の文字列に置き換えられ、これがリストに追加されます
編集:
@abarnertが指摘したように、それが何を*args
意味するのか、そしてなぜ後でそれがとして使用されるのかを説明するのは良いかもしれないargs
ので、ここに行きます。
*args
(アスタリスク+任意の名前)は、「args
リスト内でさらに利用可能な任意の数の匿名引数」を意味します。キーワード付き引数を受け入れるために使用**kwargs
される2つのアスタリスクに注意してください。つまり、は引数の名前であり、単なる。ではなくその値でfoo = bar
あるという形式で関数に渡されるアスタリスクです。foo
bar
bar
args
上で述べたように、kwargs
任意ですが、*potatoes
使用する**potatoes
ことも、使用することもできます。これはPythonの規則です(場合によっては、の代わりに使用することもありますが、意味は同じです。それぞれ、任意の数の匿名引数と任意の数のキーワード引数です)。args
kwargs
**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