A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2005-June/054285.html below:

[Python-Dev] Propose rejection of PEP 303 -- Extend divmod() for Multiple Divisors

[Python-Dev] Propose rejection of PEP 303 -- Extend divmod() for Multiple DivisorsNick Coghlan ncoghlan at gmail.com
Fri Jun 17 12:54:22 CEST 2005
Raymond Hettinger wrote:
> Executive summary:  cute, but unpersuasive and unnecessary, not worth
> the time to code, test, document, maintain, and explain.

Plus, it fails the "not every 3-line function has to be a builtin" 
guideline:

  def extended_divmod(numerator, *denominators):
     remainders = []
     for denominator in reversed(denominators):
         numerator, remainder = divmod(numerator, denominator)
         remainders.insert(0, remainder)
     return tuple(remainders)

OK, 5 lines. Anyway, not very hard to write for anyone with a genuine 
use case - and, like you, I've never used divmod for anything other 
than extracting digits (or groups of digits) from numbers.

I also don't buy the 'tedious and easy to get wrong each time you need 
it' justification in the PEP. Getting the argument order to the 
extended divmod wrong seems to be even easier.

For each of the cited use cases, a well-named function, or a proper 
class seems like a much cleaner solution.

e.g.

   class Declination(object):
     def __init__(self, value):
       try:
         # Copy a duck-typed declination
         self.degrees = value.degrees
         self.minutes = value.minutes
         self.seconds = value.seconds
       except AttributeError:
         try:
           # Allow any three-value sequence
           self.degrees, self.minutes, self.seconds = value
         except TypeError:
           # Divide a number
           value, self.seconds = divmod(value, 60)
           value, self.minutes = divmod(value, 60)
           value, self.degrees = divmod(value, 360)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.blogspot.com
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4