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~
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to