python - `tuple(None)` 和 `(None,)` 有什么区别?
问题描述
我需要返回一个包含 1 个对象的元组(我的函数属于一类函数,这些函数都应该返回一个包含 1 个以上对象的元组)。我返回的对象可能是None
,但仍需要包装在一个元组中以保持一致性。一种方法是:
return (possibly_none_object,)
但是我总是发现带有逗留逗号的语法很尴尬,所以我想我会这样做:
return tuple(possible_none_object)
我认为这会做完全相同的事情并且更明确。
但第二行抛出{TypeError} 'NoneType' object is not iterable
。这让我想知道为什么这两个语句是不同的,以及在我对 python 和元组的理解中我可能遗漏了哪些难以捉摸的细节。
这可能是一个微不足道的问题和答案,但我很好奇。
解决方案
tuple(x)
要求 x 是可迭代类型
所以例如tuple('a', 'b')
不起作用但tuple(['a', 'b'])
确实
所以tuple([None])
相当于(None,)
推荐阅读
- java - 由于上下文问题无法执行单元测试?
- angular - node_modules/bingmaps/types/MicrosoftMaps/Microsoft.Maps.d.ts' 不是模块
- sql - 如果取消,T-SQL 事务是否会回滚?
- ios - UILabel 不能同时换行和对齐
- swift - 将 [UInt8] 转换为白色透明图像
- sql - 在 SQL 中加入帮助
- lotus-notes - 生成来自另一个表单(Web)的文档链接
- javascript - 我们需要初始化一个数组吗?
- c# - MVC 中下拉列表的动态填充
- ajax - 仅当通过 AJAX 响应更改某些内容时才更改选项