小编Raf*_*ele的帖子

Python:如何用ast重载运算符

我的问题是重新+定义 - 运算符用ast评估表达式.我有一个表达式列表,使用eval()很容易解决:

>>> expr = '1+2*3**4/5'
>>> print(eval(expr))
33.4
Run Code Online (Sandbox Code Playgroud)

但我喜欢重新定义+-operator(添加)列表和dict,如下所示:

expr = '[1,2,3]+[4,5,6]'
Run Code Online (Sandbox Code Playgroud)

eval的常规结果是

[1,2,3,4,5,6]

但我想拥有

[5,7,9]

喜欢用R语言.

对于这样的字典,这同样适用:

expr = "{'a':1, 'b':2} + {'a':3, 'b':4}"
Run Code Online (Sandbox Code Playgroud)

我想要

{'a':4,'b':6}

简而言之,我认为要替换普通的add函数,即当操作数是list或dict正确的动作时.

我试图用astNodeTransformer,但没有成功.有人可以帮帮我吗?

python overloading abstract-syntax-tree

2
推荐指数
1
解决办法
423
查看次数

标签 统计

abstract-syntax-tree ×1

overloading ×1

python ×1