On Tue, 13 Dec 2011 16:24:05 +0000, Andrea Crotti wrote: > I'm not sure for how long I had this bug, and I could not understand the > problem. > > I had a function which would return a boolean > > def func_bool(): > if x: > return True > else: return False
x is a global? Poor design. But in any case, instead of an explicit if...else block, the canonical way to convert an arbitrary object to True/ False is with bool: def func_bool(): return bool(x) But you don't need it. See below. > Now somewhere else I had > > if func_bool: > # do something That would be better written as: if x: ... since func_bool always refers to x, it is just a needless level of indirection that doesn't buy you anything. > I could not quite understand why it was always true, until I finally > noticed that the () were missing. > Is there some tool to avoid these stupid mistakes? (pylint doesn't warn > me on that) Can't help you with that. Have you tried pychecker? I can't help you with that either :) -- Steven -- http://mail.python.org/mailman/listinfo/python-list