A very simple recipe to allow you easily name lambda-objects (or other kind of objects, callable, for example, partial objects) you create, with little overhead and friendly syntax.
1 2 3 4 5 6 7 8 9 10 11 12
def Name(**kw): assert len(kw)==1 name, obj = kw.items() obj.func_name = name return obj def main(): f = Name(CheckExists=lambda:os.path.exists(some_filename)) print f if __name__ == '__main__': main()
Whenever you create a lambda, it have no "function name" assigned as a regular created function would have. Indeed it will have "<lambda>" as its name. Also, we you create a lambda you are expecting to do it simply in a few lines. In this way I've created this very little recipe in order to avoid this problem.