获取Python函数的必需参数

2024-04-24 06:39:14 发布

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

有没有一种方法(最好使用ast模块)来知道函数是否具有所需数量的参数?在

例如,如果一个用户界面允许用户插入一个python表达式,例如“sum(x)”,但用户错误地键入了“sum()”,有没有办法在运行前验证该表达式?在

我已经打过电话了ast.转储在符号树中的每个节点上,但是这些符号的信息似乎不足以进行这种分析?在

例如:

#own debug code added to ast.py
def visit(self, node):
  print(dump(node),True, False)
  method = 'visit_' + node.__class__.__name__
  visitor = getattr(self, method, self.generic_visit)
  return visitor(node)  

产量:

^{pr2}$

它与print()等不需要特定数量参数的函数没有什么区别。在


Tags: 方法函数用户selfnode参数数量表达式
1条回答
网友
1楼 · 发布于 2024-04-24 06:39:14

您无法从调用表达式中看到可调用期望的参数。Python在运行时将这完全交给可调用的。在

对于静态代码分析,您唯一的选择是解析可调用的(希望它在本质上不是太动态的,例如在运行时会发生变化),对于C定义的对象,有自己的签名数据库。这是Komodo CodeIntel库采用的路径(OSS,用于其他项目,如SublimeCodeIntel)。CIX files支持基于C的扩展,它本质上包含可调用的签名。在

在运行时,您可以使用^{}来检查调用签名。目前只部分支持C函数,只有使用参数诊所的函数才存储签名信息,请参见What are __signature__ and __text_signature__ used for in Python 3.4

相关问题 更多 >