何をするのかを理解する前に、フォーマットを変更することをお勧めします。
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あるという形式で関数に渡されるアスタリスクです。foobarbar
args上で述べたように、kwargs任意ですが、*potatoes使用する**potatoesことも、使用することもできます。これはPythonの規則です(場合によっては、の代わりに使用することもありますが、意味は同じです。それぞれ、任意の数の匿名引数と任意の数のキーワード引数です)。argskwargs**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