Python 一行与多行中的布尔比较
我不知道该叫什么名字。但我对编程基本上是新手,我正在使用python。我的问题是,为什么只写return而不是一堆if和else语句的工作方式完全相同呢Python 一行与多行中的布尔比较,python,python-3.x,boolean,Python,Python 3.x,Boolean,我不知道该叫什么名字。但我对编程基本上是新手,我正在使用python。我的问题是,为什么只写return而不是一堆if和else语句的工作方式完全相同呢 #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, hou
#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))
#多行
def parrot_故障(谈话,小时):
如果说:
如果第20小时:
返回真值
返回错误
#一行
def parrot_故障(谈话,小时):
返回(通话和(小时<7或小时>20))
这两种代码产生完全相同的结果。。但是为什么呢?对不起,我是全新的,而不是
if condition == True:
return True
else:
return False
在函数中,您可以让它返回条件
return condition
因为您正在检查返回的值相同
这两种代码产生完全相同的结果
那是不对的。只有在输入为特定类型时才是正确的。考虑这个琐碎的反例:
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) # []
def parrot_trouble1(说话,小时):
如果说:
如果小时数<7或小时数>20:
返回真值
返回错误
def parrot_trouble2(说话,小时):
返回(通话和(小时<7或小时>20))
鹦鹉_麻烦1([],0)#错误
鹦鹉麻烦2([],0)#[]
请注意,和
以及或
都不会限制它们返回的值和类型
到False
和True
,而是返回最后一个计算的参数
parrot_trouble2
显示短路。让我们假设对话
是一个布尔输入。如果talking
为False
,则表达式短路并返回False
。如果talking
为True
,parrot\u trouble 2
将根据hour
的值返回True
或False
parrot_trouble1
不会短路,但结果相同。如果talking
为布尔值且False
,则函数返回False
。如果通话
为真
,则测试第二个标准小时数<7或小时数>20
。如果没有指定条件,那么,由于没有返回任何内容,Python移动在If
语句的外部和后面,以return False
的形式进行更新。谢谢,这确实帮助我了解了发生的情况。