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 http://docs.python.org/library/stdtypes.html 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: None 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. Wolfgang -- http://mail.python.org/mailman/listinfo/python-list