(The only not unreasonable suggestion in the OP's proposal is to try and come up with something better than Callable --- we've introduced other syntax specifically for type annotations, and are likely to do so again. But **PLEASE** start a new thread for that.)
On Mon, Jul 20, 2020 at 7:37 PM Steven D'Aprano <st...@pearwood.info> wrote: > On Mon, Jul 20, 2020 at 05:16:54PM -0300, Thiago Carvalho D' Ávila wrote: > > > For beginners, Python functions can cause some pain that boils down to > > three points that shows some lack of standardization. > > > > 1. Function declaration needs keyword `def`: > > I have many years of experience helping beginners on mailing lists, and > I cannot remember even a single case of anyone being confused by the > need to use "def" to declare a function. > > > > I would > > choose `fun` or even `fn` since they at least resemble the word function. > > The keyword "def" is short for "define". > > def iter() > > is read as "define iter". > > In any case, this is a matter of bikeshedding. I think that using "fun" > is a terrible choice, because it's not necessarily fun at all: > > fun pallative_care_for_the_dying(): > > but it really doesn't matter. There is zero chance that we will break > thirty years of code, tutorials, StackOverflow posts, instructional > videos, books etc just to change the colour of this bikeshed from "def" > to "fun". > > > > Resemblance of function leads me to my next point. > > > > 2. Class name > > > > Again, functions are an exception. > > Are they? > > We have tuple, not "tup"; list, not "lst", float, not "flt"; bytearray, > not "btar"; ValueError, not "VEr". > > Abbreviated three or four letter type names are the exception. > > > > But if you have a function as a parameter, your only option is to use > > Callable. It breaks the rule again having a totally different syntax: > > I don't know whether that is the only way, but Callable doesn't just > mean function. Callable means any object with a `__call__` method (what > C++ refers to as "functor", I believe, not to be confused with Haskell > functors, which are completely unrelated), which includes but is not > limited to funtions and classes. > > > > With the same goal of removing the pain and making life of Python > teachers > > easier > > Making 30 years of tutorials, documentation and books obsolete will not > make the life of Python teachers easier. > > > 1. adding `fun` keyword to method definition (maintaining `def` for > > backwards compatibility); > > Having to teach two ways to declare a function instead of one, and > answer a thousand questions "What's the difference between def and fun? > Which should I use?", doesn't make life easier for teachers. > > > -- > Steven > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/JJMS5BFIL3WI3W6CGYEE6ZBC5BUFWUUQ/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/SPGMZJQWB2UG7HAFNWN52BKX5VBTHIZ5/ Code of Conduct: http://python.org/psf/codeofconduct/