社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何解构类似Python的函数调用?

Zidaan Hayat • 3 年前 • 1260 次点击  

假设我有一个字符串形式的函数调用,比如 "log(2, floor(9.4))" .我想解构调用,让我能够访问第一次调用的函数名和参数,并准确推断函数调用作为参数是否为参数。

例如,解构上面的字符串时的参数将 [2, floor(9.4)]

我已经尝试过使用一些字符串解析技术(例如使用逗号拆分),但它似乎不起作用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130605
 
1260 次点击  
文章 [ 1 ]  |  最新文章 3 年前
BrokenBenchmark
Reply   •   1 楼
BrokenBenchmark    3 年前

你可以使用 ast 模块:

import ast

data = "log(2, floor(9.4))"
parse_tree = ast.parse(data)

# ast.unparse() is for 3.9+ only.
# If using an earlier version, use the astunparse package instead.
result = [ast.unparse(node) for node in parse_tree.body[0].value.args]
print(result)

这将产生:

['2', 'floor(9.4)']

我从手动检查 ast.dump(parse_tree) .

注意,我写的东西有点快,有点脏,因为只有一个字符串需要解析。如果你想解析很多这样的字符串(或者一个更大的程序),你应该创建 ast.NodeVisitor .如果你还想修改源代码,你应该创建 ast.NodeTransformer 相反