PyWart: Language missing maximum constant of numeric types!
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Sun Feb 26 08:50:01 EST 2012
On Sun, 26 Feb 2012 14:16:24 +0100, Wolfgang Meiners wrote:
> I just had a closer look at it. It seems to be more complicated than i
> thougth: You will have to write
>
> def confine_length(string, maxlength=None):
> if maxlength: # maxlength exists, comparison possible
> if len(string) <= maxlength:
> do_something()
> else: # maxlength does not exist, so always do something
> do_something()
No, that still takes the wrong branch for maxlength = 0.
Be explicit in your code. If you want maxlength=None to be a sentinel for
"avoid the length test", then explicitly test for maxlength is None,
don't be tempted to take short-cuts that can fail.
def confine_length(string, maxlength=None):
if maxlength is None: # no length comparison needed
do_something()
elif len(string) <= maxlength:
do_something()
This can be simplified to:
def confine_length(string, maxlength=None):
if maxlength is None or len(string) <= maxlength:
do_something()
Or even simpler:
def confine_length(string, maxlength=float('inf')):
if len(string) <= maxlength:
do_something()
--
Steven
More information about the Python-list
mailing list