A slightly cursed "improvement" to attila's answer would be
@lambda f: lambda *args: dict(f(*args))
def optional_oranges(apple, orange = None):
yield "apple", apple
if orange is not None:
yield "orange", orange
optional_oranges(1) #{'apple': 1}
optional_oranges(1,2) #{'apple': 1, 'orange': 2}