Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单python条件语句快捷语法_Python_Python 2.7_Conditional Statements - Fatal编程技术网

简单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

我很难理解下面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表示语法无效?)

如果
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:我加了:)谢谢你教人钓鱼。