有沒有一種方法(最好使用ast模塊)知道函數是否具有所需數量的參數?例如,如果用戶界面允許用戶插入例如「sum(x)」的python表達式,但用戶錯誤地鍵入了「sum()」,是否有一種方法可以在運行時驗證該表達式?獲取Python函數所需的參數
我已經在符號樹的每個節點上都調用過ast.dump,但這些符號的信息似乎不足以用於這種分析?
例如:
#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)
產量:
'Module(body=[Expr(value=Call(func=Attribute(value=Name(id='Math', ctx=Load()),
attr='cos', ctx=Load()), args=[Num(n=0.5)],
keywords=[], starargs=None, kwargs=None))])'
並不真正喜歡從打印()函數不需要的參數的具體數量不同。
您必須解析被調用的對象並分析* that *。在你實際執行調用之前,Python不知道這個*。 – 2014-09-26 15:03:48
如何爲Python函數定義「所需參數」?這個定義在哪裏? – 2014-09-26 15:03:54
我不想命名你的模塊'ast.py'。 – roippi 2014-09-26 15:04:38