在python中是否可以存储本应执行的函数?
更具体地说,是否可以使用上下文管理器创建它?我曾经见过一个上下文管理器,该上下文管理器将重试内部的所有包装代码,但是我不知道该怎么做。
例如,假设我有
def print():
print("printed")
我想要实现的是这样的:
with StopFunctionsExecution() as functions_executed:
print()
print()
print()
# So far, nothing in console
functions_executed.run_all() # or on __exit__
# All 3 printed in console
答案 0 :(得分:0)
您不能“安排”常规代码的执行,而不能立即执行它,因为这将要求更改该代码的解释方式,即更改解释器。
但是您可以更改何时解释器执行该代码:
def batch(*args):
for fn, *args_ in args:
fn.__call__(*args_)
def foo():
print("blah")
print("blar")
print("xyzzy")
batch_list = ((print, "foo"),(print, "bar"), (print, "baz"), (foo,))
<somewhere later>
batch(*batch_list)
这是安排调用在threading
和multiprocessing
中其他位置执行的方式,即分别传递函数及其参数。