简单python条件语句快捷语法
我很难理解下面python中的简写条件语句简单python条件语句快捷语法,python,python-2.7,conditional-statements,Python,Python 2.7,Conditional Statements,我很难理解下面python中的简写条件语句 def number(number): return number or number == 3 print number("") 这个快捷语法是什么意思?是否与以下内容相同 def number(number): if number or number == 3: return number print number("") 第一个打印为False,后一个为None(我相信None表示语法无效?) 如果numb
def number(number):
return number or number == 3
print number("")
这个快捷语法是什么意思?是否与以下内容相同
def number(number):
if number or number == 3:
return number
print number("")
第一个打印为False,后一个为None(我相信None表示语法无效?) 如果
number
的值为True
(因此,不是0
或None
),则函数只返回数字
如果数字的值为False
,函数将返回number==3
(因此True
如果是3,False
否则)
由于后者总是返回False(如果number==3
,则函数在第一种情况下将返回3),因此可以将其缩短为:
返回号码或False
如果不是0或无,它将返回数字,否则将返回False。在这种情况下,条件语句有点毫无意义(除了一些非常奇怪的情况,如覆盖
数字的等于/整数/布尔值)
基本上你现在正在做的是这样的:
def number(number):
if number:
return number
else:
return number == 3
return spam or eggs
如果有一个和
,它将是有用的,现在它是没有意义的
or可以像这样使用:
def number(number):
if number:
return number
else:
return number == 3
return spam or eggs
如果垃圾邮件不为空,它将返回垃圾邮件,否则它将返回鸡蛋
顺便说一句:
>>> for number in range(5):
... print 'number', number, number or number == 3
number 0 False
number 1 1
number 2 2
number 3 3
number 4 4
number和number==3或5的长版本
def number(number):
if number and number == 3:
return 3
else:
return 5
spam和spam.eggs
这件事很有用,因为如果spam
是None
,它就不会执行spam.eggs
部分,该部分通常会给出一个AttributeError
,它与Python如何计算表达式和对象有关
您的第一个示例:
您向Python发送一个空字符串”
,它是False
,很像一个空列表([]
)
你的第二个例子是另一个例子。
您有一个明确的if
说明,如果数字的计算结果为True
,即不为空或数字等于3
,请输入以下块并从中返回
但由于您提供了一个空字符串,我们刚刚了解到它返回False,因此它将绕过if并返回任何Python函数的默认值,None
def number(number):
if number or number == 3:
return number
#default says return None here.
print number("")
两种情况下的相关表达式都是number或number==3
Python将此表达式拆分为两部分:(number)或(number==3)
它首先评估各个零件,然后使用或评估结果
因此我们有“
(被视为False
)或”==3
(其计算结果为False
)。
这将变成”或False
。由于这两个表达式都是False
-y,因此整个表达式的计算结果为False
在第一个函数中,返回表达式的值,即False
。
在第二个函数中,仅当表达式的值为true时才返回该值。如果它是假的,你不会返回任何东西
在python中,默认情况下,不返回任何内容的函数返回None
。如果返回值存在差异,则返回值明显不同。数字==3在逻辑上没有意义。第一个函数返回True或False。第二个函数返回数字或不返回。返回数字和数字=3的长手等价物是什么?@Reno:我加了:)谢谢你教人钓鱼。