6

我在这个Sage wiki 页面的代码中看到了以下代码:

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

这种(1..n)语法是 Sage 独有的还是 Python 中的东西?还有,它有什么作用?

4

4 回答 4

13

它是 Sage 特有的。您可以使用preparse它来查看它是如何脱糖的:

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

有关的文档,请参见此处,有关预解析器的信息,请参见此处。ellipsis_iter

于 2010-08-18T12:11:26.243 回答
10

有一个 Python PEP 可以将此符号添加到 Python,但它被拒绝了。无论如何,Robert Bradshaw 决定实现它,但要使用 Sage 预解析器。他实施了以下措施:

  • (a..b) -- 像 xrange,所以是一个迭代器

  • [a..b] -- 列表,包括端点

  • [a,b,..,c] -- 算术级数

于 2010-08-18T15:40:15.377 回答
1

这不是 Python 语法。我猜它会创建一个从 1 到 12 的范围。

于 2010-08-18T11:49:24.007 回答
0

(1..n)Python 中不存在语法。

于 2010-08-18T11:49:02.900 回答