# 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)