簡體   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