"if not" 在这里是什么意思?
What does "if not" mean here?
def santa(*says):
if not says:
return "ho! xmas!"
else:
return says[0]+"! "+santa(*says[1:])
这是一个具有位置参数语法的递归函数,这让我难以理解。 “if not says
”是什么意思?它等于“if says == False
”吗?还是“if says is None
”?因为如果我用两者中的任何一个替换它,它就会出错。
如何 link 到:
print(santa())
没有参数和输出
"ho! xmas!"
表示满足第一个条件语句。
基本上是检查says
是否有任何值。对对象的 if 检查检查该对象的真值。 says
在这里将是一个元组。元组在 if 中是 True
检查它们是否有任何值。所以实际上这是在检查 says
是否为 (not
) 非空。
如果您感兴趣,文档有更多详细信息:https://docs.python.org/2.4/lib/truth.html
def santa(*says):
if not says:
return 'ho! xmas!'
所以我们这里有一个接受任意输入列表的函数定义。该函数做的第一件事是检查列表是否为空。然后returns一个格式化的短语,结束函数。
您可能已经知道这一点,但是 if 语句检查布尔语句的结果并相应地设置程序流。在这种情况下,布尔语句是 not says
。 says
是传递给函数的任意列表。由于 Python 中的每个对象都有一个布尔结果,因此作为列表对象的 says
也有一个布尔结果。如果为空,则结果为 false
。如果它不为空,则结果为 true
.
因此,如果 says
为空,if not says:
将继续 true
路径,因为 not
限定符,如果 false
路径 says
不为空。
更多关于 Python 真实性的信息可以在这里找到:https://docs.python.org/2/library/stdtypes.html#truth-value-testing
在 Python 中,空元组在布尔上下文中的计算结果为 False
。这可以通过将空元组转换为布尔值来看出:
>>> says = ()
>>> bool(says)
False
>>>
这意味着语句 if not says
正在测试是否使用 not
运算符通过 says
将任何参数传递给函数。这是一个例子:
>>> says = ()
>>> not says
True
>>>
因此,当您在不带任何参数的情况下调用 santa()
时,第一个 if
语句的计算结果为 True
,并返回 "ho! xmas!"
。
def santa(*says):
if not says:
return "ho! xmas!"
else:
return says[0]+"! "+santa(*says[1:])
这是一个具有位置参数语法的递归函数,这让我难以理解。 “if not says
”是什么意思?它等于“if says == False
”吗?还是“if says is None
”?因为如果我用两者中的任何一个替换它,它就会出错。
如何 link 到:
print(santa())
没有参数和输出
"ho! xmas!"
表示满足第一个条件语句。
基本上是检查says
是否有任何值。对对象的 if 检查检查该对象的真值。 says
在这里将是一个元组。元组在 if 中是 True
检查它们是否有任何值。所以实际上这是在检查 says
是否为 (not
) 非空。
如果您感兴趣,文档有更多详细信息:https://docs.python.org/2.4/lib/truth.html
def santa(*says):
if not says:
return 'ho! xmas!'
所以我们这里有一个接受任意输入列表的函数定义。该函数做的第一件事是检查列表是否为空。然后returns一个格式化的短语,结束函数。
您可能已经知道这一点,但是 if 语句检查布尔语句的结果并相应地设置程序流。在这种情况下,布尔语句是 not says
。 says
是传递给函数的任意列表。由于 Python 中的每个对象都有一个布尔结果,因此作为列表对象的 says
也有一个布尔结果。如果为空,则结果为 false
。如果它不为空,则结果为 true
.
因此,如果 says
为空,if not says:
将继续 true
路径,因为 not
限定符,如果 false
路径 says
不为空。
更多关于 Python 真实性的信息可以在这里找到:https://docs.python.org/2/library/stdtypes.html#truth-value-testing
在 Python 中,空元组在布尔上下文中的计算结果为 False
。这可以通过将空元组转换为布尔值来看出:
>>> says = ()
>>> bool(says)
False
>>>
这意味着语句 if not says
正在测试是否使用 not
运算符通过 says
将任何参数传递给函数。这是一个例子:
>>> says = ()
>>> not says
True
>>>
因此,当您在不带任何参数的情况下调用 santa()
时,第一个 if
语句的计算结果为 True
,并返回 "ho! xmas!"
。