On Thu, 22 Dec 2005 01:41:34 +1100 in comp.lang.python, Steven D'Aprano <[EMAIL PROTECTED]> wrote:
[...] >Well, let's find out, shall we? [...] >A small but consistent speed advantage to the try...except block. > >Having said all that, the speed difference are absolutely trivial, less >than 0.1 microseconds per digit. Choosing one form or the other purely on >the basis of speed is premature optimization. Or maybe on which actually works. LBYL will fail to recognize negative numbers, e.g. def LBYL(s): if s.isdigit(): return int(s) else: return 0 def JDI(s): try: return int(s) except: return 0 test = '15' print LBYL(test), JDI(test) #-> 15 15 test = '-15' print LBYL(test), JDI(test) #-> 0 -15 > >But the real advantage of the try...except form is that it generalises to >more complex kinds of data where there is no fast C code to check whether re: Generalization, apropos a different thread regarding the % operator on strings. In Python, I avoid using the specific type format conversions (such as %d) in favor of the generic string conversion (%s) unless I need specific field width and/or padding or other formatting, e.g. for p in range(32): v = 1<<p print "%2u %#010x : %-d" % (p,v,v) Regards, -=Dave -- Change is inevitable, progress is not. -- http://mail.python.org/mailman/listinfo/python-list