Default arguments with *args and **kwargs

前端 未结 7 1250
刺人心
刺人心 2020-11-27 12:12

In Python 2.x (I use 2.7), which is the proper way to use default arguments with *args and **kwargs?
I\'ve found a question on

相关标签:
7条回答
  • 2020-11-27 13:05

    You could also use a decorator like this:

    import functools
    def default_kwargs(**defaultKwargs):
        def actual_decorator(fn):
            @functools.wraps(fn)
            def g(*args, **kwargs):
                defaultKwargs.update(kwargs)
                return fn(*args, **defaultKwargs)
            return g
        return actual_decorator
    

    Then just do:

    @default_kwargs(defaultVar1 = defaultValue 1, ...)
    def foo(*args, **kwargs):
        # Anything in here
    

    For instance:

    @default_kwargs(a=1)
    def f(*args, **kwargs):
        print(kwargs['a']+ 1)
    
    f() # Returns 2
    f(3) # Returns 4
    
    0 讨论(0)
提交回复
热议问题