我试图分析不完整的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语言元素
有什么办法吗
您可以使用
keyword
模块来区分关键字和标识符:像
print
这样的内置代码和其他任何代码一样都是标识符,您可以覆盖它们,等等。如果您仍然想区别对待它们,可以检查名称是否在builtins
模块中:相关问题 更多 >
编程相关推荐