[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