检查当前方法是否已在特定方法中执行的最pythonic方法是什么?

我正在使用Python 3,并且尝试检查当前方法是否已从特定方法调用。这个不一定是父调用,而只能是祖先之一。

  

示例:

     

我需要知道是否从方法中调用方法 F    C 。方法 A 调用 B B 调用 C C 调用 D D 呼叫 E E 呼叫 F 。因此, F 的祖先方法是 [A,B,C,D,E] 。由于 C 在此列表中,   方法返回True,否则返回False

我有两种解决方案(我将用参数替换方法名称):

第一个,我认为速度更快:

for frame in inspect.stack():
    if frame.function == 'C':
        return True

第二个:

methods = [frame.function for frame in inspect.stack()]
if 'C' in methods:
    return True

第一个解决方案更好吗?有什么建议可以改善吗?这已经在任何库中进行了吗?

Win_ky33 回答:检查当前方法是否已在特定方法中执行的最pythonic方法是什么?

我会选择解决方案c,any

any(f.function == 'C' for f in inspect.stack())

就您显示的两个而言,可能第一个速度更快,因为您在循环中短路并且无需创建整个列表,然后遍历一个第二次

我之所以说是潜在原因,是因为这取决于堆栈的大小以及堆栈的状态。

本文链接:https://www.f2er.com/3167398.html

大家都在问