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 的情况下通过单击选择多行?
如何在不将密码保存在数据库中的情况下验证用户身份