我正在编写一个函数,从输入中查找唯一单词的数量
当我感到无聊并且不想做任何消磨时间的事情时,我希望打印通过*arg传递给函数的所有单词
众所周知,*args是一个元组,因此代码
print(arg)
应该放“(‘宝贝’、‘我’、‘爱’、‘你’)”或“(‘宝贝’、‘我’、‘爱’、‘你’、‘做’、‘你’、‘爱’、‘我’”),我知道这一点
然而,我的代码中有一个输入错误,一个意外的“*”。所以代码实际上是:
print(*arg)
为什么它会起作用,为什么它不会引发异常?谷歌、百度和必应都没有答案
Tags:
通常使用}
*a
而不是a
会引发错误,因为它们是不同的^函数调用中的{foo(*a)
等同于foo(a[0], a[1], ...)
,即将a
的每个元素作为单独的参数传递。另一方面,foo(a)
将整个iterablea
作为单个参数传递给foo
但是为什么你的案子没有出错呢?这是因为
print
也接受多个参数,然后打印每个由空格分隔的参数(默认情况下):在这个例子中
print
的第二行和第三行是相同的print(*a)
相当于print(a[0], a[1])
,它是print('hello', 'world')
相比之下,第一个是不同的。在这种情况下,您将给
print
一个元组,以便它打印该元组的字符串表示形式,"('hello', 'world')"
相关问题 更多 >
编程相关推荐