为什么python在用字符串写入时不会将float或任何其他数据类型转换为字符串?

时间:2014-06-30 10:50:46

标签: python string python-3.x floating-point

假设

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

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

为什么我必须在Python中显式地将float转换为字符串,但其他语言如Java会隐式转换它?

2 个答案:

答案 0 :(得分:3)

你没有。您只需要在连接时显式转换它。 print()将使用空格自行分隔参数,将每个参数转换为字符串:

print(p1, p2, r)

引用print() documentation

  

所有非关键字参数都转换为str()之类的字符串并写入流中,由 sep 分隔,然后是 end

sep 默认为' '字符串。

您通常使用string formatting将值插入字符串:

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

否则,尝试将字符串与其他值连接起来隐式转换值;这与Zen of Python

相反
  

明确比隐含更好。

答案 1 :(得分:0)

如果要将各种数据类型连接到字符串中,则使用+str.join方法连接将要求它们在之前成为字符串

正如Martijn所示,它不需要打印,但这可能会让人感到困惑,因为默认情况下打印包括换行符和用于分隔由正在打印的逗号分隔的元素的空格。

如果你想隐式地将它们转换为字符串,我推荐string.format方法:

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

这是格式化文本非常有用和高效的方法,不必担心类型,只要你不介意获取它们的默认字符串表示。