2016-11-20 14 views
1

私はその後、私は両方のa & bがオプションでない場合は、その後、私がチェックする必要がデフォルトの名前付きパラメータはありませんか?

t(b=2, a=5) 

で呼び出すことができるように

def t(a=None, b=None): 
    return a+b 

などという名前parametered Pythonの関数を作成することができます知っています実行時の関数、例

def t(a=None, b=None): 
    if a is not None and b is not None: 
     return a+b 
    else: 
     raise Exception('Missing a or b') 

できるだけ早くコンパイル時にチェックインできますか?

t(a=3) # raise error 
+3

なぜデフォルトを使用していますか? –

答えて

1

However, if both a & b are not optional, then I need to check in the function in runtime, e.g.

そうでないん。それを呼び出そうと、

TypeError: t() takes exactly 2 arguments (0 given) 

または:

t() 

がエラーにつながる:正しい数の引数なしでそれを呼び出そうと

def t(a, b): 
    return a + b 

:ちょうどデフォルトを提供していません。不正な名前の引数を使用します。

t(c=4) 

また、エラーになる:

TypeError: t() got an unexpected keyword argument 'c' 
5

パラメータがオプションでない場合、デフォルトを使用しないでください。

コールでこれらのパラメータを名前付きパラメータとして引き続き使用できます。 Pythonの関数ですべてパラメータの名前は次のとおりです。パラメータの間違った数に渡すと、常にランタイムチェックではなく、コンパイル時のチェックです

def t(a, b): 
    return a+b 

t(a=3, b=4) 

注意。動的言語として、呼び出すときに実際のオブジェクトtがどのようなものになるかをコンパイル時に知ることは不可能です。

関連する問題