你能解释一下“return 0”和“return”之间的区别吗?例如:
do_1():
for i in xrange(5):
do_sth()
return 0
do_2():
for i in xrange(5):
do_sth()
return
上面两个函数有什么区别?
取决于使用情况:
>>> 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'
而正如提克多玛所说,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
0
由于某些计算,python 函数会返回:
def add_2_numbers(a,b):
return a + b # 1 -1 would return 0
或者因为magic
旗帜之类的东西,这是不受欢迎的。
但在 python 中,我们不用0
来表示成功,因为:
if get_user(id):
True
如果我们返回,则不会评估,0
因此该if
分支将不会运行。
In [2]: bool(0)
Out[2]: False
它与python没有任何关系。
每当您执行一个函数时,您都可以选择返回一个值。
关键字是return
通知函数是否应该返回值的信息。
如果没有给 thereturn
赋值或没有分配要返回的变量,则返回值为None
如果您分配一个值,在这种情况下,0
要返回,那么该值0
将由函数返回,当return
达到关键字和值时,函数将结束。
有关以下内容的更多信息0
:使用 a 的原因0
是因为返回0
“成功”的函数和非零返回值要么只是要返回的值,要么有时是函数未正确执行时的错误代码,这是司空见惯的.