我正在测试一组函数,并希望得到要打印到控制台的已测试函数的名称
if __name__ == '__main__':
passedMsg = "%s passed"
failedMsg = "%s failed"
list_of_functions = [testaddDict(), testaddDictN(), testcharCount(), testcharCount2(), testlookupVal(),
testlookupVal2(), testfunRun(), testnumPaths(), testnumbersToSum(), teststreamSquares(),
teststreamSquares()]
for i in range(0, len(list_of_functions)):
if list_of_functions[i]:
print (passedMsg % str(list_of_functions[i]))
else:
print (failedMsg % str(list_of_functions[i]))
当我执行上述操作时,我得到的不是函数名,而是:
True passed
每次迭代。我哪里做错了
首先,让您的列表保存函数对象(这意味着您不应该调用它们,因为如果这样做,您将保存返回值)
这是因为函数是python中的第一类对象(意味着您可以将它们赋给其他变量,以此类推)。接下来,这样修改循环,直接在
list_of_functions
上迭代:最重要的变化是在
if
语句中调用函数,并通过其返回值确定函数是否通过。相应地打印f.__name__
,其中__name__
属性保存函数的“名称”为什么我建议直接遍历函数列表(而不是遍历
range
),主要是为了效率和简单下面是一个演示,有两个功能:
相关问题 更多 >
编程相关推荐