python - 是否可以在运行时以编程方式装饰函数/方法?
问题描述
假设我有一个返回函数的 python 函数
def get_function():
@some_decorator
def some_function():
// some code
return some_function
相反,我想要类似的东西:
def get_function():
@some_decorator
def some_function():
// some code
if some_condition:
return some_function # Return some_function() with @some_decorator
else:
return some_function_without_decorator # Return some_function() without @some_decorator
解决方案
装饰器简单地返回它下面的函数,包裹着装饰器的函数。换句话说,这:
@some_decorator
def some_function():
# some code
相当于:
some_function = some_decorator(some_function)
这意味着您可以通过编写以编程方式“装饰”该函数:
if some_condition:
some_function = some_decorator(some_function)
推荐阅读
- javascript - 按不同键中的特定值对对象数组进行排序
- c++ - 如何从具有两列的 .txt 文件创建并行数组?
- python-3.x - Python 覆盖不会将输出重定向到文件
- mips - MIPS32 read_string 长度未知
- python - scipy中约束中具有不完整伽马函数的非线性优化
- javascript - 在 Node 中使用 axios 发送 POST 数据的正确方法是什么?
- macos - 如何加快 PyCharm 中缓慢的建议?
- php - MySql Invalid parameter number:绑定变量数与token数不匹配
- r - 将 GMMAT 包安装到 R-Studio v. 1.2.5033 和 R-console v.3.6.0 时出现问题
- google-apps-script - 防止来自 Apps 脚本的重复日历事件