python 这演示了如何在不分析字符串的情况下制作自定义python ast逻辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 这演示了如何在不分析字符串的情况下制作自定义python ast逻辑相关的知识,希望对你有一定的参考价值。

In [196]: # by: Cody Kochmann - this demonstrates how to make ast logic without analyzing strings

In [197]: def my_adder(a,b,c):
     ...:     d = a+b
     ...:     if c%2:
     ...:         return a+b
     ...:     else:
     ...:         return a+d
     ...:

In [198]: ast.parse(inspect.getsource(my_adder)).body[0].body[0]
Out[198]: <_ast.Assign at 0x108d95ac8>

In [199]: ast.dump(ast.parse(inspect.getsource(my_adder)).body[0].body[0])
Out[199]: "Assign(targets=[Name(id='d', ctx=Store())], value=BinOp(left=Name(id='a', ctx=Load()), op=Add(), right=Name(id='b', ctx=Load())))"

In [200]: ast.Assign(targets=[ast.Name(id='d', ctx=ast.Store())], value=ast.BinOp(left=ast.Name(id='a', ctx=ast.Load()), right=ast.Name(id='b', ctx=ast.Load())))
Out[200]: <_ast.Assign at 0x108dca9e8>

In [201]: ast.dump(ast.Assign(targets=[ast.Name(id='d', ctx=ast.Store())], value=ast.BinOp(left=ast.Name(id='a', ctx=ast.Load()), right=ast.Name(id='b', ctx=ast.Load()))))
Out[201]: "Assign(targets=[Name(id='d', ctx=Store())], value=BinOp(left=Name(id='a', ctx=Load()), right=Name(id='b', ctx=Load())))"

以上是关于python 这演示了如何在不分析字符串的情况下制作自定义python ast逻辑的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将其备份到 iCloud 的情况下为我的应用程序提供演示数据?

不用苦苦寻找,这就是最全的聚类算法汇总(附Python代码演示)

Python Pandas:如何在不编写辅助函数的情况下使用 apply 广播操作

Python:如何在不扩展矩阵的情况下增加矩阵的维度?

Python QTableView |如何在不按住 Ctrl 的情况下通过单击选择多行?

如何在不将密码保存在数据库中的情况下验证用户身份