Python 为什么我不能添加一个';int';至';str';使用'+';?

Python 为什么我不能添加一个';int';至';str';使用'+';?,python,python-3.x,stdout,Python,Python 3.x,Stdout,或 将输出为: 你好,世界 但是,当我尝试使用“+”将变量(int)与“str”一起插入打印函数时,出现了一个错误。但是,当我使用“,”时,它是为了工作而设计的。即: print ("hello" +"world") 它显示了错误 TypeError:只能将str(而不是“int”)连接到str 但当我使用: x=1 print("the value of 'x' is " + x + ".") 我得到了期望的输

将输出为:

你好,世界

但是,当我尝试使用“+”将变量(int)与“str”一起插入打印函数时,出现了一个错误。但是,当我使用“,”时,它是为了工作而设计的。即:

print ("hello"
+"world")
它显示了错误

TypeError:只能将str(而不是“int”)连接到str

但当我使用:

x=1
print("the value of 'x' is " + x + ".")
我得到了期望的输出

我想知道为什么python是这样设计的,在这个上下文中使用“+”的含义是什么。谢谢

编辑:感谢您的回复,其目的是因为在Java+中意味着简单地放在一起。

print()
只是一个函数,它的设计方式是接受可变数量的位置参数,并在内部将其转换为str

如你所见:

打印(*对象,sep='',end='\n',file=sys.stdout,flush=False)

所有非关键字参数都转换为字符串,如str()所做的
和 写入流,由sep分隔,后跟end。都是九月 而结尾必须是弦;它们也可以是None,这意味着使用 默认值。如果没有给定对象,print()将只写end。
. . .

当您执行
打印(“x”的值是,“,”)
时,您将向函数传递3个不同的参数,该函数作为
对象获取。如前所述,它们被转换为字符串

但是,在
print(“x”的值为“+x+”)
行中,您尝试将值串联起来并作为单个参数传递,因为串联操作不是有效的操作(python没有像javascript那样强制转换操作中的不同类型),它在到达print函数之前失败。

print()
只是一个函数,它的设计方式是接受数量可变的位置参数,并在内部将其转换为str

如你所见:

打印(*对象,sep='',end='\n',file=sys.stdout,flush=False)

所有非关键字参数都转换为字符串,如str()所做的
和 写入流,由sep分隔,后跟end。都是九月 而结尾必须是弦;它们也可以是None,这意味着使用 默认值。如果没有给定对象,print()将只写end。
. . .

当您执行
打印(“x”的值是,“,”)
时,您将向函数传递3个不同的参数,该函数作为
对象获取。如前所述,它们被转换为字符串


但是,在
print(“x”的值为“+x+”)
行中,您尝试将值串联起来并作为单个参数传递,因为串联操作不是有效的操作(python没有像javascript那样强制转换操作中的不同类型),它在到达打印功能之前就失败了。

将此操作视为
打印
功能中的“
+
”是错误的思维模式。这里有两个完全独立的操作:

  • print
    知道它需要派生一个字符串来显示它
  • +
    对其结果的后续用法一无所知
Python中的函数(以及扩展方法和运算符)不是返回类型多态的,这是一种奇特的说法,表示函数不知道期望从它们那里得到什么输出类型。仅仅因为
+
用于派生要打印的参数,并不能告诉它字符串是所需的结果

操作
:str+:int
没有定义良好的输出类型。什么是
“1”+1
?是
2
,是
“11”
,是
11
还是别的什么?对于这两种类型没有明确的答案,因此Python始终会引发
TypeError
。结果是否最终用于
打印
无关紧要


相反,
print
用于将其参数的字符串表示形式写入流。每个参数最终都必须生成一个字符串并写入流。操作
print(:str,:int)
不需要将
str
int
连接起来-它可以分别转换为
str
,并立即写入。

将此操作视为
print
函数中的
+
是错误的思维模式。这里有两个完全独立的操作:

  • print
    知道它需要派生一个字符串来显示它
  • +
    对其结果的后续用法一无所知
Python中的函数(以及扩展方法和运算符)不是返回类型多态的,这是一种奇特的说法,表示函数不知道期望从它们那里得到什么输出类型。仅仅因为
+
用于派生要打印的参数,并不能告诉它字符串是所需的结果

操作
:str+:int
没有定义良好的输出类型。什么是
“1”+1
?是
2
,是
“11”
,是
11
还是别的什么?对于这两种类型没有明确的答案,因此Python始终会引发
TypeError
。结果是否最终用于
打印
无关紧要


相反,
print
用于将其参数的字符串表示形式写入流。每个参数最终都必须生成一个字符串并写入流。操作
print(:str,:int)
不需要将
str
int
串联在一起-它可以分别将它们转换为
str
,并立即写入。

+
是一个运算符。它在具有
x=1
print("the value of 'x' is " + x + ".")
print("the value of 'x' is ",x,".")