2016-07-01 23 views
15

Có cách nào để nhóm các chữ số trong mã Python để tăng tính dễ đọc của mã không? Tôi đã thử '_digit separators của một số ngôn ngữ khác, nhưng không có kết quả.Dấu phân tách chữ số trong mã Python

Nhà điều hành kỳ lạ nối vào cạnh bên tay trái với mặt bên phải cũng có thể hoạt động.

+0

bạn có thể cụ thể hơn .. cho một ví dụ? –

+2

Tôi nghĩ rằng anh ta muốn thay thế số nguyên 31415926 bằng 31_415_926 chẳng hạn. – Prune

+0

Tôi không chắc là được triển khai. Có đề xuất, nhưng không phải triển khai – Li357

Trả lời

16

Cập nhật một vài năm sau: Python 3.6 hiện hỗ trợ PEP515 và vì vậy bạn có thể sử dụng _ để cải thiện khả năng đọc nổi và số nguyên nguyên.

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

Để tham khảo lịch sử, bạn có thể nhìn vào phân tích từ vựng cho các định nghĩa nghiêm ngặt python2.7, python3.5 ...

Đối python3.6.0a2 trở về trước, bạn sẽ nhận được một thông báo lỗi tương tự như:

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

Không có chức năng nào như vậy trong Python nhưng được đề xuất để tích hợp nó trong tương lai.

Bạn có thể xem đề xuất trong số PEP515.

2

Điều gần nhất tôi thấy trong python là 12 * 1000 * 1000, điều này không lý tưởng, nhưng có thể hữu ích nếu cần 12000000. Mặc dù vậy, trong C, chúng tương đương nhau, vì lúc biên dịch nó chuyển đổi cả hai thành cùng một thứ, python có thể không chia sẻ tối ưu hóa này.

+1

Nếu chúng là chữ, python sẽ gấp các hằng số. Nó sẽ không làm bất kỳ gấp biểu tượng mặc dù. – mgilson

+0

Cảm ơn. Tôi đã nghĩ như vậy, nhưng tôi không muốn truyền bá thông tin xấu. – TemporalWolf

+2

Đối với 12 triệu, tôi muốn sử dụng và giới thiệu '12e6'. – ThoAppelsin

4

Hiện nay không có dấu phân cách hàng ngàn bằng Python, nhưng bạn có thể sử dụng locale mô-đun để chuyển đổi chuỗi có dải phân cách như vậy cho một int:

import locale 
locale.setlocale(locale.LC_ALL, '') 
locale.atoi("1,000,000") 
Các vấn đề liên quan