如何在python*中分析python代码*以识别变量名、函数调用

2024-03-29 12:41:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图分析不完整的python代码片段(来自github diffs),我想分析特定的标记是python语言的元素(例如“if”或“+”或“def”),是函数调用(如“initialize()”),还是变量名

代码以字符串形式提供

我已经看过python标记器(https://docs.python.org/3/library/tokenize.html),它很有用,因为它可以区分注释、字符串、名称和操作。但是这个工具将“def”和“print”标识为名称,就像它对“my\u function()”或“counter”或任何其他变量或函数名称所做的那样

我想区分被解析为变量的东西和被解析为函数的东西

我也看了eval和exec,但我不想执行我的代码,我只想一个令牌一个令牌地检查它,找出这个令牌是什么类型的python语言元素

有什么办法吗


Tags: 函数字符串代码标记github名称语言元素
1条回答
网友
1楼 · 发布于 2024-03-29 12:41:04

您可以使用keyword模块来区分关键字和标识符:

import keyword

def is_keyword(name):
    return name in keyword.kwlist

print这样的内置代码和其他任何代码一样都是标识符,您可以覆盖它们,等等。如果您仍然想区别对待它们,可以检查名称是否在builtins模块中:

import builtins

def is_builtin(name):
    return name in builtins.__dict__

相关问题 更多 >