从函数返回元组中的单个项目从函数返回元组中的单个项目(Returning tuple with a

2019-05-12 07:05发布

对面在Python古怪的这一点点来了,以为我会记录它 写如下问题的情况下,任何人都试图找到具有相同空检索方面,我是一个答案

貌似元组拆包使得它,所以如果你希望遍历返回值,你不能返回长度为1的元组。 看来虽然看起来都是骗人的。 查看答案。

>>> def returns_list_of_one(a):
...     return [a]
...
>>> def returns_tuple_of_one(a):
...     return (a)
...
>>> def returns_tuple_of_two(a):
...     return (a, a)
...
>>> for n in returns_list_of_one(10):
...    print n
...
10
>>> for n in returns_tuple_of_two(10):
...     print n
...
10
10
>>> for n in returns_tuple_of_one(10):
...     print n
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>

Answer 1:

你需要明确使它成为一个元组(参见官方教程 ):

def returns_tuple_of_one(a):
    return (a, )


Answer 2:

这不是错误,一个元组由以下构成val,(val,) 它是逗号,而不是定义在Python语法元组中的括号内。

你的函数实际上是返回a本身,这当然是不迭代。

引用序列和元组文档 :

一个特殊的问题是含有0或1项的元组的结构:语法上有一些额外,以适应这些。 空元组由一对空括号的构造; 一个项目的元组通过用逗号之后的值(它不足以在圆括号括一个单一的值)构成。 丑陋,但是有效。



Answer 3:

(a)不是一个单一的元素的元组,它只是一个括号表达式。 用(a,)



Answer 4:

取而代之的是丑陋的逗号,你可以使用tuple()内置方法。

def returns_tuple_of_one(a):
    return tuple(a)


文章来源: Returning tuple with a single item from a function