2016-07-01 91 views
15

是否有任何方法將Python代碼中的數字分組以增加代碼易讀性?我試過'_這是其他一些語言的digit separators,但沒有用。Python代碼中的數字分隔符

一個奇怪的操作符連接其左手側和右手側也可以解決。

+0

你可以更具體..舉個例子? –

+2

我想他想用31_415_926替換整數字面量31415926,例如。 – Prune

+0

我不確定這是否實施。有提案,但沒有執行 – Li357

回答

16

幾年後更新:Python 3.6現在支持PEP515,所以你可以使用_來實現float和integer的可讀性改進。

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 1_1000 
11000 
>>> 

由於歷史的參考,你可以看看嚴格定義python2.7python3.5詞法分析...

對於python3.6.0a2和更早版本,你應該得到類似的錯誤消息:

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 1_000 
    File "<stdin>", line 1 
    1_000 
     ^
SyntaxError: invalid syntax 
>>> amount = 10_000_000.0 
    File "<stdin>", line 1 
    amount = 10_000_000.0 
        ^
SyntaxError: invalid syntax 
3

在Python中沒有這樣的函數,但有人建議將它集成在將來。

您可以在PEP515中看到提案。

2

我在python中看到的最接近的東西是12 * 1000 * 1000,這並不理想,但如果需要12000000可能會很有用。儘管如此,儘管在C中,這些是等價的,因爲在編譯時它將兩者都轉換爲相同的東西,python可能不會共享此優化。

+1

如果它們是文字,python會摺疊常量。它不會做任何摺疊的符號。 – mgilson

+0

謝謝。我認爲會,但我不想傳播壞信息。 – TemporalWolf

+2

對於1200萬,我會使用並推薦'12e6'。 – ThoAppelsin

4

目前,在Python中沒有千位分隔符,但可以使用locale模塊串用這種隔板的轉換爲int:

import locale 
locale.setlocale(locale.LC_ALL, '') 
locale.atoi("1,000,000")