为什么print(* iterable_list)作为字符串返回?

时间:2019-02-25 05:27:58

标签: python-3.x

当我打印可迭代列表时,它将作为列表返回,但是如果我使用*,它将打印为字符串而不是列表。

numbers = [1, 3, 5, 7, 13]
print(numbers)
#[1, 3, 5, 7, 13]

print(*numbers)
#1 3 5 7 13

通常,如果我使用*解包,它将作为列表返回:

a, *b = numbers
print(b)
#[3, 5, 7, 13]

但是为什么在打印返回中使用*作为字符串?我相信我可能会误会某些东西,或者也许我只是在这里不清楚地了解一些东西

有人可以指出我吗?

  1. 为什么print(* iterable_list)作为字符串返回?

  2. print(* iterable_list)的用例是什么?

谢谢

2 个答案:

答案 0 :(得分:1)

首先,函数print始终返回None,从不返回数字或字符串。

星号运算符将其右操作数(可迭代)转换为参数列表。 print(*numbers)等同于print(numbers[0],numbers[1],numbers[2],...)。每个项目均单独打印-在您的情况下为数字。

相反,print(numbers)numbers打印为列表,并具有所有列表格式,例如逗号和方括号。

关于用例,我认为您的示例清楚地说明了区别。

答案 1 :(得分:0)

您刚刚说过*用于解包。然后,据此,我认为它再次使用*解压缩列表或其他内容,并保留在此*中,表示保留逗号分隔的变量,并且默认情况下python print具有sep按空格排列,因此它返回带有空格分隔值的字符串。 我对此不太确定...但是我认为应该可以使用