「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ない場合のデフォルトの戻り値です。returnNone
barNone引数なしのステートメントを使用しているため、戻ります。returnこれもデフォルトでNoneです。
quxNone明示的にそうするので、戻ります。
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.