PyWart: Language missing maximum constant of numeric types!
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Sun Feb 26 08:19:23 EST 2012
On Sun, 26 Feb 2012 12:56:46 +0100, Wolfgang Meiners wrote:
> That means:
> if maxlength and (len(string) <= maxlength):
>
> is equivalent to
> if (maxlength is not None) and (len(string) <= maxlength):
>
> which is more complicated to type and -in my opinion- not so intuitive.
> But because it is equivalent, it is a matter of taste, what to use.
Incorrect. The two are *not* equivalent.
def test(maxlength, string):
flag1 = maxlength and (len(string) <= maxlength)
flag2 = (maxlength is not None) and (len(string) <= maxlength)
return bool(flag1), bool(flag2) # normalise to booleans
>>> test(0, '')
(False, True)
So the two forms will take opposite branches of the if statement when
maxlength is 0 and string is the empty string.
--
Steven
More information about the Python-list
mailing list