2010-08-18 31 views
6

tôi thấy trong mã trên Sage wiki page này đoạn mã sau:Cú pháp Python (1..n)?

@interact 
def _(order=(1..12)): 

(1..n) cú pháp này độc đáo để Sage hoặc là nó một cái gì đó bằng Python? Ngoài ra, nó làm gì?

Trả lời

13

Đó là đặc trưng của Sage. Bạn có thể sử dụng preparse để xem làm thế nào nó được khử đường đến:

sage: preparse("(1..12)") 
'(ellipsis_iter(Integer(1),Ellipsis,Integer(12)))' 

Xem here cho tài liệu của ellipsis_iter, here để biết thông tin trên preparser.

0

(1..n) cú pháp không tồn tại trong Python.

1

Đây không phải là cú pháp Python. Tôi đoán rằng nó tạo ra một phạm vi từ 1 đến 12.

9

Có một PEP Python để thêm ký hiệu này vào Python, nhưng nó đã bị từ chối. Robert Bradshaw đã quyết định thực hiện nó, nhưng đối với Sage preparser. Ông thực hiện như sau:

  • (a..b) - như xrange, vì vậy một iterator

  • [a..b] - danh sách, bao gồm các điểm cuối

  • [a , b, .., c] - số học tiến triển

Các vấn đề liên quan