def my_test(some_function):
def wrapper():
num = 10
if num == 10:
print("Yes")
else:
print("No")
some_function()
print("Something is happening after some_function() is called")
return wrapper
def just_some_function():
print("Filler text")
my_test(just_some_function)
当我运行此脚本时,它应显示:
是
填充文字
调用some_function()之后发生了一些事情
,因为my_test(just_some_function)
调用my_test
,通过包装函数,检查是否num == 10
,打印"是,"然后转到just_some_function()
(因为some_function
是"变量"对于函数my_test()
),打印"填充文本,"最后通过打印结束"在调用some_function()之后发生了一些事情。"但是当我运行脚本时,控制台中没有任何反应。
答案 0 :(得分:1)
my_test
是一个高阶函数;它所做的就是返回另一个函数,在本例中为wrapper
。你需要实际调用返回的函数:
my_test(just_some_function)()
注意,除了用于演示目的 - 或作为装饰器 - 这是编写代码的一种非常无意义的方式。