According to PEP8, you should “Always use a def statement instead of an assignment statement that binds a lambda expression directly to a name.” So, one thing I would change is:
def blank_fn(*args, **kwargs): pass
However, I think a more pythonic way to do this is:
def perform_task(callback=None): print 'doing stuff' if callback is not None: callback('x', 'y', z='z')
There shouldn’t be any need to call a function that does nothing. Truth value testing is cheaper than function calling.
def do_nothing(*args, **kwargs): pass def do_something(arg, callback=do_nothing): a = 1 + 2 callback('z', z='z') def do_something_else(arg, callback=None): a = 1 + 2 if callback is not None: callback('z', z='z') %timeit do_something(3) 1000000 loops, best of 3: 644 ns per loop %timeit do_something_else(3) 1000000 loops, best of 3: 292 ns per loop