3

引数リストのアンパック:

def send(*data):
    for datum in data:
        ser.write(datum)

vs最初にリストを送信する:

def send(data):
    for datum in data:
        ser.write(datum)
4

1 に答える 1

4

それ以外の場合は常にリストを渡す必要がある場合の API を簡素化する場合:

send(something, otherthing)

対:

send([something, otherthing])

通常のパラメーターはさまざまな場所から取得されます。たとえばsomething、 とotherthingは、すでに 1 つのリストに収集されているよりも、別の変数である可能性が高くなります。

print()関数と同様に、Python 3.x関数はまさにそれを行いos.path.join()ます。API を呼び出す前に、すべての印刷引数または結合するパス要素をリストにまとめることはめったにありません。

比較:

os.path.join(rootdirectory, relativepath, filename)
print('Debug information:', localvariable)

対。

os.path.join([rootdirectory, relativepath, filename])
print(['Debug information:', localvariable])

.join()1つprint()の位置引数 (リスト) のみを受け入れる場合、API のユーザーは括弧[]角括弧を何度も入力していることに気付くでしょう。

可変数の位置引数を受け入れることで、API のユーザーが関数呼び出しのためだけにリストを作成する手間を省くことができます。パラメータがすでにリストに集められているまれなケースでは、*params呼び出し規約を使用できます。

send(*params)

関数の署名をエコーし​​ます。

于 2012-12-18T18:29:48.743 に答える