Quick actions

cmd+k|ctrl+k

Navigation

Languages

my_default_by_or

Snippet info

Language

Python

Visibility

public

Author

hyrious

Created

2020-01-20T10:02:37Z

Updated

2020-01-20T10:02:41Z

# coding: utf-8
import functools


def my_default_by_or(func):
    @functools.wraps(func)
    def wrapper(*args):
        args = dict(enumerate(args))
        args = [args.get(i) or v for i, v in enumerate(func.__defaults__)]
        return func(*args)

    return wrapper


@my_default_by_or
def unpack_with_default(a=1, b=2, c=3, d=4, e=5):
    return a, b, c, d, e


out = unpack_with_default(1, 0, 2)
print(out)
INFO