dictのpop()は第2引数に任意の値をとることができ、かつ第2引数があるかないかで挙動が変わります。
d = {'a':10, 'b':20}
d.pop('x') #=> KeyError
d.pop('x', None) #=> 第2引数が返される

このように、任意の値を取ることができる省略可能な引数がある場合に、引数が指定されたかどうかを調べるにはどうしたらいいですか。
例えば次のような定義だと、引数にNoneを指定した場合に例外が発生してしまいます。こうではなくて、引数が指定されなかった場合のみ例外が発生するようにしたいです。
(例が恣意的なのは突っ込み禁止)
def f(arg=None):
 if arg is None: raise Exception()
 else: return None

あとは *args とする方法も考えられますが、間違った数の引数を渡してもエラーにならないので、あまりいい方法ではないです。
def f(*args):
 if len(args) == 0: raise Exception()
 else: return args[0]