'tuple(None)`和`(None,)`有什么区别?

时间:2018-10-10 00:58:24

标签: python

我需要返回一个1个对象的元组(我的函数属于一类函数,都应该返回1个以上的对象的元组)。我要返回的对象可能是None,但是为了保持一致性,仍然需要将其包装在元组中。一种方法是:

return (possibly_none_object,)

但是我总是发现,带有逗号的语法是很尴尬的,所以我想我应该这样做:

return tuple(possible_none_object)

我认为这会做完全相同的事情,并且更加明确。

但是第二行抛出{TypeError} 'NoneType' object is not iterable。这让我想知道为什么这两个语句是不同的,以及在理解python和元组时可能会缺少哪些难以捉摸的细节。

这可能是一个琐碎的问答,但我很好奇。

2 个答案:

答案 0 :(得分:2)

pip install --upgrade tensorflow==1.10要求x为可迭代类型

例如tuple(x)不起作用,但是tuple('a', 'b')起作用

所以tuple(['a', 'b'])等同于tuple([None])

答案 1 :(得分:2)

即使标准的逗号也不能接受,只会使它更加复杂。

<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="dgt 2.css"> </head> <body> <h1>My HTML file</h1> </body> </html> 接受一个可迭代的对象,并将其转换为元组。因此,您可以通过h1 { color: green; } 完成所需的工作。但是不是更尴尬吗?前卫括号和另外创建的列表。

或者您可以通过使用装饰器使它变得更加复杂,该装饰器为您隐藏了挥之不去的逗号:

tuple