2017-11-13 15 views
-1

重複するものがあるかどうか教えてください(私はそこにいると思います)、私はその投稿を削除します。私はこの質問の専門用語についてはわかりません。Python:他の関数の引数を含む関数の引数を定義します。

すでにoriginal_funcを定義し、他の機能を含む新しい機能augmented_funcを書くとき、私はoriginal_funcに既にある引数の定義を回避しようとしています:augmented_funcを定義するとき、私はa年代を書く避けるにはどうすればよい

def original_func(a1, a2 ,a3): 
    print(a1, a2, a3) 

def augmented_func(b, a1, a2, a3): 
    print(original_func(a1, a2, a3), b) 

をこの例では、original_funcの引数の数が3つ以上の場合に特に簡単になります。

答えて

2

使用位置引数の任意の数の*表記:

def augmented_func(b, *args): 
    print(original_func(*args), b) 

augmented_func('b', 1, 2, 3) 

それとも**とキーワード引数を使用します。

def augmented_func(b, **kwargs): 
    print(original_func(**kwargs), b) 

augmented_func('b', a1=1, a2=2, a3=3) 
+0

ああ、私は 'augmented_func'を' augmented_func(b、a1 = 3、a2 = 2、a3 = 4) 'と呼ぶことができます。 – Francis

+0

いいえ、 'augmented_func(b、3、2、4)'が動作します: – schwobaseggl

+0

あなたは 'kwargs'を使いたいと思います。 'args'では、あなたが議論を送る順序に注意を払わなければなりません。 – ljetibo

1

は、私が何を探していることは

def original_func(a1, a2 ,a3): 
    print(a1, a2, a3) 

def augmented_func(b, *args): 
    print(original_func(*args), b) 
のようなものだと思います

あなたはそれをと呼ぶことができます

*args**kwargsは、可変数の引数を渡すと、他の内部関数呼び出しに渡すための良い方法です。

Python docs詳細については、

+0

ここでkwargsの使い方についても言えますか? –

関連する問題