2017-12-15 8 views
0

私はこの非常に単純な関数を持っています(私はまだ初心者です)。Pythonの "None"

そして、それはのように行く:

def add_num(x,y,z=None): 
    if z == None: 
     return x+y 
    else: 
     return x+y+z 

print(add_num(1,2)) 
print(add_num(1,2,3)) 

だから私の質問私は3番目の変数が存在しない場合は、それが受け入れられていることに気づくとき、です。つまり、「なし」とは、基本的には、「変数=なし」の場合、変数に値を付けないことを意味します。ただ確認する!ありがとう!

+0

「変数に値を付けるのは大丈夫ですか? –

+0

'None'は' NoneType'型のオブジェクトです。 https://docs.python.org/3/library/constants.html –

+0

誰かが '== None'の代わりに' is None'の使用について答えたのを見てください。これは一般的ではありますが必須ではありません。同じアイデンティティの場合にはequalsがTrueであるのに対し、objectのコピーに対しても 'is 'がオブジェクトアイデンティティをチェックするということだけです。しかし、「None」はシングルトンではコピーできませんので、Trueの場合は常に同じオブジェクトになります。 – progmatico

答えて

1

これを試してみてください:

def add_num(x,y,z='spatula'): 
    if z == 'spatula': 
     return x+y 
    else: 
     return x+y+z 

print(add_num(1,2)) 
print(add_num(1,2,3)) 

Noneは、ここに使用するのが一般的であるが、それは、引数をデフォルトに固有ではありません。

5

「なし」とは、基本的には、「変数=なし」の場合、変数に値を設定しても問題ありません。ただ確認する!ありがとう!

いいえ、あなたはこのように関数を定義:

def add_num(x,y,z=None): 

xyzキーワード引数である一方で、 "位置" の引数であり、彼らが必要とされています。キーワード引数には、関数の呼び出し時に値を指定しない場合に使用されるデフォルト値があります。その代わりなしで、あなただけのように簡単に記述することができ:

def add_num(x,y,z=0): 

または:

def add_num(x,y,z=5): 

などいずれの場合も、それが機能で提供されていない場合は、zのデフォルト値を設定していますコール。あなたはこのように複数のキーワード引数を、持っている場合は、その

注:

def do_something(x, y, size='medium', name=None): 

あなたは引数が一致するためにする必要があり、その場合には位置引数、などの値とそれらを提供することができます

do_something(1,2, 'large', 'alice') 

しかし、あなたはまた、このように、関数呼び出しで自分の名前を提供することで、任意の順序でキーワード引数を指定することができます。

do_something(1, 2, name='alice', size='large) 

そして、あなたがデフォルトに満足している場合は、値を提供する必要はありません。

do_something(1, 2, name='alice') 
+0

@ user2357112編集していただきありがとうございますが、編集したい場合は、新しい回答を投稿してください。またはコメントに私にpingしてください... – larsks

+1

すべての権利は、コメントしています。デフォルトのパラメータ値とキーワード引数は、まったく同じような構文をしているまったく別個のものです。デフォルトのパラメータ値は、パラメータが位置的に提供されるのを止めるものではなく、デフォルトが存在しなくても、キーワード引数によってパラメータが提供されるのを止めることはありません。キーワードによって提供されなければならないパラメータの実際の構文は、まったく異なって見えます。 [デモはこちら](https://ideone.com/7j9qOr) – user2357112

+0

[関数定義]の言語リファレンスドキュメントもご覧ください(https://docs.python.org/3/reference/compound_stmts.html#関数定義)と[calls](https://docs.python.org/3/reference/expressions.html#calls)は、デフォルトとキーワードの引数を混ぜ合わせない - '='は常に定義のデフォルト値を表します、および呼び出しのキーワード引数。 – user2357112

1

私はPythonのチュートリアルを見てみましょうべきです。特にDefault Argument Values

この章では、デフォルトの引数で関数を定義する方法について説明します。

次はaboutキーワード引数:関数は、kwarg = valueという形式のキーワード引数を使用して呼び出すこともできます。

引数の二種類があります

キーワード引数:引数関数呼び出しに識別子(例えば、名前=)が先行または**によって先行辞書の値として渡されたが。

complex(real=3, imag=5) 
complex(**{'real': 3, 'imag': 5}) 

位置引数:キーワード引数はない引数、例えば、図3及び図5は、複合()への次の呼び出しの両方のキーワード引数です。位置引数は、引数リストの先頭に出現するか、*で始まる反復可能要素の要素として渡されます。たとえば、次の呼び出しでは、3と5は両方とも定位置引数です。

complex(3, 5) 
complex(*(3, 5)) 

引数は、関数本体の名前付きローカル変数に割り当てられます。

+1

あなたは*彼が* Pythonのtuturialを見る必要があると言っているのですか? – Barmar

関連する問題