为什么Python认为这是一个元组?

为什么Python认为这是一个元组?,python,Python,第一部分运行良好,第二部分崩溃。以下是结果 Emil Refsnes 托比亚斯·雷夫内斯 莱纳斯·雷夫内斯 回溯(最近一次呼叫最后一次): 文件“C:/Data/Python/turtleFun/kikiFunction.py”,第19行,在 我的问候语(“堂”) 文件“C:/Data/Python/turtleFun/kikiFunction.py”,第17行,在我的问候语中 打印(fname+“Smith”) TypeError:只能将元组(而不是“str”)连接到元组 我没有创建元组,我

第一部分运行良好,第二部分崩溃。以下是结果

Emil Refsnes
托比亚斯·雷夫内斯
莱纳斯·雷夫内斯
回溯(最近一次呼叫最后一次):
文件“C:/Data/Python/turtleFun/kikiFunction.py”,第19行,在
我的问候语(“堂”)
文件“C:/Data/Python/turtleFun/kikiFunction.py”,第17行,在我的问候语中
打印(fname+“Smith”)
TypeError:只能将元组(而不是“str”)连接到元组
我没有创建元组,我没有尝试连接。结构相同,但一个运行,另一个崩溃。为什么Python 3.8.3认为我有一个元组?我怎么修理?元组将是

def my_function(fname):
    print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")

def my_greeting(*fname):
    print(fname + " Smith")

my_greeting("Don")
问题
*
旁边的
*fname
始终将
fname
作为一个元组

了解发生了什么 让我们看看将
*fname
作为参数的函数真正做了什么

myTuple = ("Don", "Fred", "George", "Paul", "John", "Ringo")
*fnames
被赋予2个以上的参数时,Python为什么不只使用元组呢? Python总是使用元组作为
*
-类型的参数,因此我们的代码总是可以预期某种类型。否则,
myu问候语('Don')
fnames
设置为
str
,而
myu问候语('Don','Don2')
fnames
设置为
str
元组


我希望这能帮助你学习

“我没有试图连接”-你是,这就是
+
所做的。而且:
*fnames
不仅允许1个或多个参数,还允许零个参数
my_greeting()
是合法的,拥有一个空元组可以让您将其与任何其他可能的单个参数区分开来。是的!很好,现在补充一下。谢谢托马斯!我正在学习的视频系列没有提到,当您向*fnames传递参数(“Don”)时,它将被视为一个元组,或者您可以只传递(Don)并将其视为一个字符串。从这个免费的在线视频课程中,我学到了很多关于python的知识,但这给我留下了很多未回答的问题。我将把这些信息添加到我的笔记中。
>>> def func(*fnames):
...     print(fnames)
...     print(type(fnames))
>>> func('str 1', 'str 2')
('str 1', 'str 2')
<class 'tuple'>