Python 什么是;若否,";你是说这里?
这是一个带有位置参数语法的递归函数,这一直困扰着我的理解。“Python 什么是;若否,";你是说这里?,python,function,if-statement,conditional,Python,Function,If Statement,Conditional,这是一个带有位置参数语法的递归函数,这一直困扰着我的理解。“如果不说”是什么意思?它是否等于“if says==False”?或者“如果表示无””?因为如果我用两者中的任何一个替换它,它会给出一个错误 它如何链接到: print(圣诞老人()) 它没有参数和输出 def santa(*says): if not says: return "ho! xmas!" else: return says[0]+"! "+santa(*says[1:])
如果不说
”是什么意思?它是否等于“if says==False
”?或者“如果表示无”
”?因为如果我用两者中的任何一个替换它,它会给出一个错误
它如何链接到:
print(圣诞老人())
它没有参数和输出
def santa(*says):
if not says:
return "ho! xmas!"
else:
return says[0]+"! "+santa(*says[1:])
这意味着它满足第一个条件语句 基本上是检查
是否表示
有任何价值。对象上的if检查检查该对象的真值表示
将是一个元组。在if检查中,元组是True
,如果它们有任何值。实际上,这是检查是否表示为(非)非空
如果您感兴趣,这些文档将提供更多详细信息:
我们这里有一个函数定义,它接受任意的输入列表。函数要做的第一件事是检查列表是否为空。然后返回一个格式化的短语,结束函数
您可能已经知道这一点,但是if语句检查布尔语句的结果并相应地设置程序流。在本例中,布尔语句是而不是表示
是传递给函数的任意列表。由于Python中的每个对象都有一个布尔结果,说
,作为列表对象,有一个布尔结果。如果为空,则结果为false
。如果不为空,则结果为true
因此,如果不说:
由于非
限定符,如果说
为空,则将转到真
路径,如果说
不为空
关于Python真实性的更多信息可以在这里找到:在Python中,在布尔上下文中,空元组的计算结果为False
。这可以通过将空元组强制转换为布尔值看到:
def santa(*says):
if not says:
return 'ho! xmas!'
这意味着语句if not says
正在测试是否有任何参数通过says
使用not
操作符传递到函数中。以下是一个例子:
>>> says = ()
>>> bool(says)
False
>>>
因此,当您在没有任何参数的情况下调用santa()
时,第一个if
语句的计算结果为True
,并返回“ho!xmas!”
。如果说是falsy,即空元组,那么如果says==False
为什么会给出错误?他们不一样吗thing@MrSoLoDoLo它不应该给出错误,但也不应该工作。当你做if-says
时,等于做if-bool(says)
。Python自动将表示的
转换为布尔值。然而,当您尝试测试是否表示
自己是“falsy”时,Python也希望您将表示
转换为布尔值。这就是为什么if says==False
不起作用的原因。
>>> says = ()
>>> bool(says)
False
>>>
>>> says = ()
>>> not says
True
>>>