我不确定标题的名字。但是我一般都不是编程新手,而我正在使用python。我的问题是,如果if和else语句的工作原理完全相同,为什么只写return而不是一堆。
#Multiple lines
def parrot_trouble(talking, hour):
if talking:
if hour <7 or hour >20:
return True
return False
#One line
def parrot_trouble(talking, hour):
return (talking and (hour < 7 or hour > 20))
这两个代码都产生完全相同的结果..但是为什么呢?抱歉,我超级新手
答案 0 :(得分:2)
这两个代码都产生完全相同的结果
那是不对的。仅当输入是特定类型时才如此。考虑一下这个简单的反例:
def parrot_trouble1(talking, hour):
if talking:
if hour < 7 or hour > 20:
return True
return False
def parrot_trouble2(talking, hour):
return (talking and (hour < 7 or hour > 20))
parrot_trouble1([], 0) # False
parrot_trouble2([], 0) # []
and
/ or
are designed this way: 请注意,
and
和or
都没有限制值和类型,它们返回 到False
和True
,而是返回最后一个求值的参数。
parrot_trouble2
出现短路。假设talking
是布尔输入。如果talking
为False
,则表达式会短路并返回False
。如果talking
为True
,则parrot_trouble2
将返回True
或False
,具体取决于hour
的值。
parrot_trouble1
不会短路,但是结果是一样的。如果talking
为布尔值且False
为布尔值,则该函数返回False
。如果talking
是True
,则测试第二个标准hour < 7 or hour > 20
。如果未指定条件,则由于未返回任何内容,因此Python将移动到if
语句之后并移至return False
。
答案 1 :(得分:-1)
而不是拥有
if condition == True:
return True
else:
return False
在函数中,您可以让它返回条件
return condition
因为您要检查返回的值相同