gpt4 book ai didi

python - 在 Python 项目中搜索递归函数

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:43 26 4
gpt4 key购买 nike

我需要在 Python 项目中找到所有递归的函数(即调用它们自己)。有什么想法可以解决这个问题吗?

最佳答案

很难说函数在运行前是否递归。我会亲自将这个与 inspect.getclosurevars 一起使用(在 Python 3.3 中添加):

import sys

if sys.version_info >= (3, 3, 0):
from inspect import getclosurevars

def is_recursive(func):
if sys.version_info >= (3, 3, 0):
return getclosurevars(func).globals.get(func.__name__) is func
else:
# We can implement part of it if it's not in our standard library
def global_vars_in_closure(func):
vars = {x: func.__globals__.get(x) for x in func.__code__.co_names}
return vars

return global_vars_in_closure(func).get(func.__name__) is func

它将在大多数用例中正常工作,只要记住在 Python 2 上使用 func_X 而不是 __X__ 作为函数方法。它将如果一个函数在没有调用的情况下包含对自身的引用,则失败:

def false_recursive():
false_recursive

def true_recursive():
true_recursive()

assert is_recursive(true_recursive), 'Must not fail'
assert not is_recursive(false_recursive), 'See? It fails' # AssertionError: See? It fails

关于python - 在 Python 项目中搜索递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com