Python 中為何沒有數字到字串的自動轉換?

時間 2021-05-31 05:54:03

1樓:小咩2021

數字加字串,你想要啥結果?

舉例:這兩種都說得過去吧

『abc'+'def'+1 = [198 200 202](字元陣列自動轉換為ascii碼數字,數字不變,然後進行加法運算,matlab中的定義)

『abc'+'def'+1 = 『abcdef1'(數字轉文字,字串不變,然後進行合併運算,你給的定義)

『abc'+'def'+1 = 『abcdef\x01'(數字按內碼轉文字,字串不變,然後進行合併運算,我給的定義)

一種程式語言很重要的一點是要儘量減少歧義.

2樓:Coldwings

哪有那麼複雜……Py是有隱式轉換的,只不過這個隱式轉換裡沒有把str和int的__add__帶進去罷了。

所謂的隱式轉換其實都是事先實現好了轉換方法,並且以預設形式帶進了內建庫里。int是有__str__的,你呼叫.format的時候總不需要你手動轉換一下,只是在str類的__add__裡與其他型別的加法運算遇到就拋異常。

你要覺得不爽,完全可以重寫str類的__add__,從此實現用+來連線任何型別,反正別的能輸出的型別至少都有個__str__或者__eval__。想用單獨的運算子也行啊,貌似str還沒有__del__呢,不如就用這個?

至於為什麼沒有預設寫進buildin裡,大概因為Py最初目的就是通用語言而不是web專屬,考慮語言習慣與消歧義比較重要,出錯了拋異常也好抓;另一方面,大概是一般沒人覺得這有什麼不妥,不然怎麼連個PEP都沒人提?畢竟主流語言設計裡都認為format形式更優雅,js都在加format string。

不過居然還有蹦噠出來喊Php用.來結合字元運算是設計優秀……類成員呼叫強行->也是無限的優越性?C++你說老,那往新了看Swift、C#又如何?

Php獨出來個.你可以說這叫重視字串處理,畢竟Php最初就是以乙個模板合成指令碼的形式出現的。

至於py3裡print由語句變為函式,一來是str型別本質發生改變,二來是便於新增功能(ending、encode之類的)、patch和擴充套件,不信翻翻PEP,總之是跟字串與數字運算的隱式轉換沒一毛錢關係……

3樓:龍騰道默默地

靜態強型別效率高。

不過js不區分數字+和字串+的自動轉換,可以玩自定義新型別物件的黑魔法:(}+

})//猜猜等於幾?

4樓:

Python是強型別的,因此不支援這個功能是很自然的,如果你使用Perl這樣弱型別的語言,就會支援你這麼做了。

其他的原因樓上都說的很多了,這種情況下比較好的方法,是使用格式化字串或者字串模板。

如何看待 Pirah 語沒有數字?

jointer 有個少和多就可以表示數字了,排列組合即可。設少 1 多 2 空位 0,則是3進製。根據少和多排列的位置就可以表示任何整數了,十位的少表示例如1到12可表示為 1 空空少 2 空空多 3 空少空 4 空少少 5 空少多 6 空多空 7 空多少 8 空多多 9 少空空 10 少空少 11...

沒有分別心的人看所有數字都是1嗎?

卅豐 那不成了傻子,連數都不會數了嗎?沒有分別心可不是把人變成傻子。沒有分別心不是這麼理解的,不能望文生義。沒有分別心是不以自己為中心和參考係去判定事物的好壞 善惡等等一切對立的東西。類似於不以物喜,不以己悲這種。把自己放在客觀中立的位置你才能看到真相。 護法居士 復次舍利子。菩薩摩訶薩圓滿清淨戒行...

python 如何讀取txt檔案中的數字並轉換成list?

已登出 with open nums.txt r as f content f.read lines line.split for line in content.split n lst for line in lines lst line print lst 測試 txt 檔案 執行結果 與其他答...