PyWart: Language missing maximum constant of numeric types!

Wolfgang Meiners WolfgangMeiners01 at
Sun Feb 26 06:56:46 EST 2012

Am 25.02.12 18:54, schrieb MRAB:
>> If there is no limit for len(string), why not simply use
>> # get_limit() returns None if there is no limit
>> maxlength = get_limit()
>> if maxlength and (len(string)<= maxlength):
>>      allow_passage()
>> else:
>>      deny_passage()
> That should be:
> if maxlength is not None and len(string) <= maxlength:

Take a look at

where  you can read:
Any object can be tested for truth value, for use in an if or while
condition or as operand of the Boolean operations below. The following
values are considered false:



      zero of any numeric type, for example, 0, 0L, 0.0, 0j.

      any empty sequence, for example, '', (), [].

      any empty mapping, for example, {}.

      instances of user-defined classes, if the class defines
      __nonzero__() or __len__() method, when that method returns the
      integer zero or bool value False. [1]

All other values are considered true — so objects of many types are
always true.

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.


More information about the Python-list mailing list