当我打印(*args)时会发生什么(注意星号*)

2024-06-06 13:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个函数,从输入中查找唯一单词的数量

当我感到无聊并且不想做任何消磨时间的事情时,我希望打印通过*arg传递给函数的所有单词

众所周知,*args是一个元组,因此代码

print(arg)

应该放“(‘宝贝’、‘我’、‘爱’、‘你’)”或“(‘宝贝’、‘我’、‘爱’、‘你’、‘做’、‘你’、‘爱’、‘我’”),我知道这一点

然而,我的代码中有一个输入错误,一个意外的“*”。所以代码实际上是:

print(*arg)

为什么它会起作用,为什么它不会引发异常?谷歌、百度和必应都没有答案

enter image description here


Tags: 函数答案代码数量错误时间argargs
1条回答
网友
1楼 · 发布于 2024-06-06 13:27:38

通常使用*a而不是a会引发错误,因为它们是不同的^函数调用中的{}foo(*a)等同于foo(a[0], a[1], ...),即将a的每个元素作为单独的参数传递。另一方面,foo(a)将整个iterablea作为单个参数传递给foo

但是为什么你的案子没有出错呢?这是因为print也接受多个参数,然后打印每个由空格分隔的参数(默认情况下):

a = ('hello', 'world')

print(a) # ('hello', 'world')
print(*a) # hello world
print('hello', 'world') # hello world

在这个例子中print的第二行和第三行是相同的print(*a)相当于print(a[0], a[1]),它是print('hello', 'world')

相比之下,第一个是不同的。在这种情况下,您将给print一个元组,以便它打印该元组的字符串表示形式"('hello', 'world')"

相关问题 更多 >