繁体   English   中英

为什么用string编写时python无法将float或任何其他数据类型转换为string?

[英]why python not converts float or any other data type to string when written with string?

假设

p1="python"
p2="script"
r=0.242424

print(p1+" "+p2+" "+r)          #wrong or error in python
print(p1+" "+p2+" "+str(r))       #correct  

为什么我们必须在Python中将浮点数显式转换为字符串,而其他语言(如Java)却将其隐式转换呢?

你不知道 串联时只需要显式转换即可。 print()将使用空格自行分隔参数,并将每个参数转换为字符串:

print(p1, p2, r)

引用print()文档

所有非关键字参数都将像str()一样转换为字符串,并写入流中,以sep分隔,后跟end

sep默认为' '字符串。

通常,您使用字符串格式将值插值到字符串中:

print("Running a {} {} to show the value of r={:.6f}".format(p1, p2, r))

否则,试图连接具有其他值隐式转换值的字符串; 这与PythonZen背道而驰

显式胜于隐式。

如果要将各种数据类型连接到字符串中,请在使用+str.join方法进行串联之前将它们作为字符串。

正如Martijn所显示的,它不是打印所必需的,但是这可能会造成混淆,因为默认情况下,打印包括换行符和将要打印的逗号分隔的元素分隔开的空格。

如果要将它们隐式转换为字符串,建议使用string.format方法:

>>> '{0} {1} {2}'.format(p1, p2, r)
'python script 0.242424'

只要您不介意获取默认的字符串表示形式,这便是一种非常有用且高效的格式化文本格式的方法,而不必担心类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM