Skip to main content
 首页 » 编程设计

Python 函数——当我不知道函数需要多少个参数时如何动态调用函数

2025年05月04日15shangdawei

我想用 python 编写一个方法,该方法动态读取模块并创建该模块中所有函数的列表。然后我想遍历这个列表并调用每个函数。到目前为止,我有以下代码:

import mymodule 
from inspect import getmembers, isfunction 
 
def call_the_functions(): 
    functions_list = [f for f in getmembers(mymodule) if isfunction(f[1])] 
    for f in functions_list: 
        result = f() 

我的问题是我的程序崩溃了,因为一些函数需要参数。我想做类似下面的事情,但不知道怎么做:

for f in functions_list: 
    args = [""] * f.expectedNumberOfArguments() 
    result = f(*args) 

我的做法是否正确? (我基本上是在写一个单元测试,第一个检查只是函数返回一个正确类型的对象,不管调用它们的参数是什么。)

请您参考如下方法:

您的方法存在根本性缺陷。如果仔细编写,函数将通过引发 TypeError 或断言来拒绝无效类型的参数。如果做不到这一点,他们将尝试访问参数的属性或方法并立即得到一个 AttributeError。

试图避免编写对被测函数有所了解的单元测试是徒劳的。