「return 0」と「return」の違いを教えてください。例えば:
do_1():
for i in xrange(5):
do_sth()
return 0
do_2():
for i in xrange(5):
do_sth()
return
上記の2つの機能の違いは何ですか?
使用法によって異なります:
>>> def ret_Nothing():
... return
...
>>> def ret_None():
... return None
...
>>> def ret_0():
... return 0
...
>>> ret_Nothing() == None
True
>>> ret_Nothing() is None # correct way to compare values with None
True
>>> ret_None() is None
True
>>> ret_0() is None
False
>>> ret_0() == 0
True
>>> # and...
>>> repr(ret_Nothing())
'None'
そして、Tichodromaが述べたように、0
はに等しくありませんNone
。ただし、ブールコンテキストでは、両方ともFalse
次のようになります。
>>> if ret_0():
... print 'this will not be printed'
... else:
... print '0 is boolean False'
...
0 is boolean False
>>> if ret_None():
... print 'this will not be printed'
... else:
... print 'None is also boolean False'
...
None is also boolean False
Pythonのブールコンテキストの詳細:真理値テスト
Python では、すべての関数が暗黙的または明示的に戻り値を返します。
>>> def foo():
... x = 42
...
>>> def bar():
... return
...
>>> def qux():
... return None
...
>>> def zero():
... return 0
...
>>> print foo()
None
>>> print bar()
None
>>> print qux()
None
>>> print zero()
0
ご覧のとおりfoo
、bar
とqux
はまったく同じ組み込み定数 を返しNone
ます。
foo
関数が明示的に値を返さNone
ない場合のデフォルトの戻り値です。return
None
bar
None
引数なしのステートメントを使用しているため、戻ります。return
これもデフォルトでNone
です。
qux
None
明示的にそうするので、戻ります。
zero
ただし、完全に異なり、整数0
を返します。
booleansとして評価され0
、両方None
とも に評価される場合False
、それ以外にも、それらは非常に異なります (実際には異なる型NoneType
とint
)。
def do_1():
return 0
def do_2():
return
# This is the difference
do_1 == 0 # => True
do_2 == 0 # => False
Python では、関数はNone
明示的または暗黙的に戻ります。
例えば
# Explicit
def get_user(id):
user = None
try:
user = get_user_from_some_rdbms_byId(id)
except:
# Our RDBMS raised an exception because the ID was not found.
pass
return user # If it is None, the caller knows the id was not found.
# Implicit
def add_user_to_list(user):
user_list.append(user) # We don't return something, so implicitly we return None
Python 関数は0
、何らかの計算のために次のいずれかを返します。
def add_2_numbers(a,b):
return a + b # 1 -1 would return 0
または、magic
眉をひそめている旗のようなもののために。
0
しかし、Python では、次の理由から成功を示すために使用しません。
if get_user(id):
True
返された場合は評価されない0
ため、このif
ブランチは実行されません。
In [2]: bool(0)
Out[2]: False
特にpythonとは何の関係もありません。
関数を実行するたびに、オプションで値を返すことができます。
キーワードは、return
値を返す必要があるかどうかを関数に通知するものです。
に値が指定されていreturn
ないか、返される変数が割り当てられていない場合、戻り値はNone
この場合、0
返される値を割り当てると、関数によって値が返され、キーワードと値に到達0
すると関数が終了します。return
についての詳細情報0
: a が使用される理由は、返される関数が「成功」し、ゼロ以外の戻り値が単に返される値であるか、関数が正しく実行されなかった場合のエラー コードである0
ことが一般的であるためです。0
.