首先,我了解了 Python 装饰器是什么以及它们是如何工作的。我希望它做这样的事情:
def age_over_18(go_enjoy_yourself):
def go_home_and_rethink_your_life():
return 'So you should go home and rethink your life.'
return go_enjoy_yourself if age_stored_somewhere > 18 else go_home_and_rethink_your_life
@age_over_18
def some_porn_things():
return '-Beep-'
但是我发现装饰器是在 Python 首次读取函数时执行的,这意味着这个函数实际上什么都不做。
我知道我可以写如下内容:
def some_porn_things():
if age_stored_somewhere > 18:
...
else:
...
但我只是觉得装饰器优雅易懂,所以问题是:
我可以在调用函数之前延迟装饰器的发生吗?