在Python中反向执行函数

bit*_*den 2 python function

我有一个看起来像这样的函数:

def f():
  call_some_function_A()
  call_some_function_B()
  [...]
  call_some_function_Z()
Run Code Online (Sandbox Code Playgroud)

我希望函数反向执行; 也就是说,执行必须如下所示:

def f'():
  call_some_function_Z()
  [...]
  call_some_function_B()
  call_some_function_A()
Run Code Online (Sandbox Code Playgroud)

(f总是这样,逻辑上可以反转它;即没有变量声明或类似的东西).

我怎么能做到这一点?

我不能只编写一个反向f'调用语句的函数f,因为我不希望f'每次f更改都要更新.

我也无法修改f.

(请不要告诉我,我不应该尝试这样做,或者重新设计我的代码,或类似的东西 - 这不可能.)

Ole*_*pin 9

如果您f()完全由这些函数调用组成,则可以将其重新编写为列表:

functions = [
    call_some_function_A,
    call_some_function_B,
#   [...]
    call_some_function_Z,
]
Run Code Online (Sandbox Code Playgroud)

然后使用它以(反向)顺序调用函数.

def f():
    for func in functions:
        func()

def f_():
    for func in reversed(functions):
        func()
Run Code Online (Sandbox Code Playgroud)