Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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_Function_If Statement_Conditional - Fatal编程技术网

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