[Python-ideas] get() method for list and tuples

Ethan Furman ethan at stoneleaf.us
Fri Mar 3 14:15:10 EST 2017


On 03/03/2017 10:48 AM, Sven R. Kunze wrote:
> On 03.03.2017 18:06, Ethan Furman wrote:
>> On 03/02/2017 12:36 PM, Sven R. Kunze wrote:

>>> It then would make sense to remove .get() on dicts.  ;-)
>>>
>>> and to remove parameter "default" of max().
>>> and to remove parameter "default" of getattr().
>>
>> Backwards compatibility, and performance, says no.  ;)
>>
>> try/except expressions are not a silver bullet any more than try/except blocks.  But they can still be very useful.
>
> Totally true. I think both proposals have their merit.
>
> IIRC, Guido rightfully declared that try/except expressions aren't a good idea. It's better to find more concrete
> patterns instead of it. And I still agree with him.
>
> The "default parameter" pattern is such a pattern, and it's vastly used in the stdlib.


$ grep "def get(" *.py */*.py */*/*.py

queue.py:    def get(self, block=True, timeout=None):
pickle.py:    def get(self, i):
shelve.py:    def get(self, key, default=None):
doctest.py:    def get(self):
mailbox.py:    def get(self, key, default=None):
weakref.py:    def get(self, key, default=None):
weakref.py:    def get(self, key, default=None):
sre_parse.py:    def get(self):
webbrowser.py:    def get(using=None):
tkinter/ttk.py:    def get(self, x=None, y=None):
configparser.py:    def get(self, section, option, *, raw=False, vars=None, fallback=_UNSET):
configparser.py:    def get(self, option, fallback=None, *, raw=False, vars=None, _impl=None, **kwargs):
email/message.py:    def get(self, name, failobj=None):
asyncio/queues.py:    def get(self):
logging/config.py:    def get(self, key, default=None):
idlelib/pyparse.py:    def get(self, key, default=None):
wsgiref/headers.py:    def get(self,name,default=None):
xml/dom/minidom.py:    def get(self, name, value=None):
_collections_abc.py:    def get(self, key, default=None):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self, first, last=None):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self):
tkinter/__init__.py:    def get(self, index1, index2=None):
tkinter/__init__.py:    def get(self, x, y):
tkinter/__init__.py:    def get(self):
xml/sax/xmlreader.py:    def get(self, name, alternative=None):
collections/__init__.py:    def get(self, key, default=None):
idlelib/scrolledlist.py:    def get(self, index):
idlelib/searchengine.py:    def get(root):
multiprocessing/pool.py:    def get(self, timeout=None):
xml/etree/ElementTree.py:    def get(self, key, default=None):
multiprocessing/queues.py:    def get(self, block=True, timeout=None):
multiprocessing/queues.py:    def get(self):
multiprocessing/managers.py:    def get(self):
multiprocessing/managers.py:    def get(self):
idlelib/idle_test/mock_tk.py:    def get(self):
idlelib/idle_test/mock_tk.py:    def get(self, index1, index2=None):

I wouldn't consider 10 out of 43 "vastly" (11 out of 46 if one includes dict, list, and tuple).  The numbers are even 
worse if one considers the "get_something_or_other" methods which do not have a default parameter.

--
~Ethan~


More information about the Python-ideas mailing list