python - 检查函数参数的装饰器

标签 python python-decorators

我需要为函数创建装饰器,这样如果使用相同的参数连续调用特定函数两次,它将不会运行,而是返回 None 。

被修饰的函数可以有任意数量的参数,但不能有关键字参数。

例如:

@dont_run_twice
def myPrint(*args):
    print(*args)

myPrint("Hello")
myPrint("Hello")  #won't do anything (only return None)
myPrint("Hello")  #still does nothing.
myPrint("Goodbye")  #will work
myPrint("Hello")  #will work

最佳答案

看看这个简单的方法是否适合您。

prev_arg = ()

def dont_run_twice(myPrint):

    def wrapper(*args):
        global prev_arg

        if (args) == prev_arg:
            return None

        else:
            prev_arg = (args)

        return myPrint(*args)

    return wrapper


@dont_run_twice
def myPrint(*args):
    print(*args)

关于python - 检查函数参数的装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65634297/

相关文章:

python - 突然出现导入错误

python - 如何使用行数和列名从 CSV 文件调用组件

python - 如何通过添加参数来扩展 Python 的内置属性类而不破坏它?

python - 带参数的装饰器

沿列对 2D 数组进行排序的 Pythonic 且有效的方法

python - 从url中提取uuid

python - 从 csv 中的单列创建文件夹并使用其他列将文件重命名为文件夹

python-3.x - Python子类方法从父类(super class)方法继承装饰器

python - 如何通过键入函数名称而不使用括号来调用 python 中的函数

python - 我可以装饰一个显式函数调用吗,比如 np.sqrt()