首页 > 解决方案 > `tuple(None)` 和 `(None,)` 有什么区别?

问题描述

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

return (possibly_none_object,)

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

return tuple(possible_none_object)

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

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

这可能是一个微不足道的问题和答案,但我很好奇。

标签: python

解决方案


tuple(x)要求 x 是可迭代类型

所以例如tuple('a', 'b')不起作用但tuple(['a', 'b'])确实

所以tuple([None])相当于(None,)


推荐阅读