gpt4 book ai didi

python - 圣人语法 A.

转载 作者:行者123 更新时间:2023-12-01 08:52:01 28 4
gpt4 key购买 nike

sage我可以创建一个PolynomialRing变量 x 中的字段像这样:

A.<x> = PolynomialRing(GF(2))

doc所示.

我的问题纯粹是关于语法:什么是 A.<x> ?在普通的Python中,这将是无效的语法(对吗?)?是否有关联的 __something__被调用的函数?或者这里发生了什么?所有这些如何分配给 A (以及x)?

反汇编给出:

sage: from dis import dis
sage: def f():
....: A.<x> = PolynomialRing(GF(2))
....: return A
....:
sage: dis(f)
2 0 LOAD_GLOBAL 0 (PolynomialRing)
3 LOAD_GLOBAL 1 (GF)
6 LOAD_GLOBAL 2 (Integer)
9 LOAD_CONST 1 (2)
12 CALL_FUNCTION 1
15 CALL_FUNCTION 1
18 LOAD_CONST 2 ('names')
21 LOAD_CONST 5 (('x',))
24 CALL_FUNCTION 257
27 STORE_FAST 0 (A)
30 LOAD_FAST 0 (A)
33 LOAD_ATTR 3 (_first_ngens)
36 LOAD_CONST 4 (1)
39 CALL_FUNCTION 1
42 UNPACK_SEQUENCE 1
45 STORE_FAST 1 (x)

3 48 LOAD_FAST 0 (A)
51 RETURN_VALUE

括号中是否调用_first_ngens

最佳答案

Here is an example of the syntax you need :

sage: preparse("A.<x> = PolynomialRing(GF(2))")
"A = PolynomialRing(GF(Integer(2)), names=('x',)); (x,) = A._first_ngens(1)"

详细来说,Sage 构建了一个预解析器,它接受在数学上有意义的无效 Python 输入并提供有效的 Python。事实上,即使你不认为它存在,它也存在很多:

sage: preparse("2+2")
'Integer(2)+Integer(2)'

以便算术采用 Sage 任意精度的 Integer 格式,而不是 Python int 格式。最著名的例子可能是

sage: preparse("f(x)=x^2")
'__tmp__=var("x"); f = symbolic_expression(x**Integer(2)).function(x)'

这看起来有点疯狂,但使我们能够使用“正常”数学符号来定义符号函数,但它们与 def Python 函数的方式不同。

(最后,至于为什么该语法在您的原始示例中有效,显然历史表明这也是 Magma 的语法。)

关于python - 圣人语法 A.<x>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53045500/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com