python3模块用迭代来模拟递归。
iterativerecursion的Python项目详细描述
迭代执行
python3模块用迭代模拟递归。
这是我做的一个模块,因为我需要这样的东西 一部分是一个小实验。
安装
使用pip
安装pip3 install -U iterativerecursion
用法
from iterativerecursion import FunctionReturn
from iterativerecursion import IterativeRecursionEngine
def func_1_to_test(a: int) -> FunctionReturn:
"""
Print a number.
:param a: int: Number to print.
"""
print(f"a: {a}")
return dict(
call_arg_n_func=dict(b="global_a"),
next_function_to_call="func_2_to_test",
returned_values=dict(global_a=a + 1)
)
def func_2_to_test(b: int) -> FunctionReturn:
"""
Print a number.
:param b: int: Number to print.
"""
print("b", b)
return dict(
call_arg_n_func=dict(),
next_function_to_call=None,
returned_values=dict()
)
executor = IterativeRecursionEngine()
executor.add_function(func_1_to_test)
executor.add_function(func_2_to_test)
executor.start_function_caller(
next_function_to_call="func_1_to_test",
enviroment_variables=dict(test_var=2),
call_arg_n_func=dict(a="test_var")
)
输出:
a: 2
b 3
注意无限循环:
from iterativerecursion import FunctionReturn
from iterativerecursion import IterativeRecursionEngine
def func_1_to_test(a: int) -> FunctionReturn:
"""
Print a number.
:param a: int: Number to print.
"""
print(f"a: {a}")
return dict(
call_arg_n_func=dict(a="global_a"),
next_function_to_call="func_1_to_test",
returned_values=dict(global_a=a + 1)
)
executor = IterativeRecursionEngine()
executor.add_function(func_1_to_test)
executor.start_function_caller(
next_function_to_call="func_1_to_test",
enviroment_variables=dict(test_var=0),
call_arg_n_func=dict(a="test_var")
)
输出:
a: 0
a: 1
a: 2
...
此模块上使用的导入类型:
from iterativerecursion import FunctionReturn, VarsDict