Boštjan Mejak writes:
> ***
> What if we could define functions (that don't have any parameters) like this:
>
> def my_function:
> pass
>
> ***
> Is that a possible scenario at this point, or even desirable?
I'm sure it's possible, but the argument lists are very different in
nature. (1) The superclasses optionally passed to class are actual
classes and have no necessary relation to the class body, while the
identifiers passed to def are formal arguments which declare their use
to the function body. (2) object is always an implied superclass, so
"class Foo():" doesn't mean "no superclass", whereas "def foo():"
*does* mean "no arguments." So the analogy doesn't really stand up.
It's not necessarily undesirable, but what benefit is there other than
saving a couple of keystrokes? I don't see how
def myfunction:
pass
is more readable than
def myfunction():
pass
Python is strongly conservative about these things; this is unlikely
to get any uptake unless you can show a benefit bigger than saving two
keystrokes on a relatively uncommon construct. In the case of class,
on the other hand, requiring "(object)" is a fair amount of clutter
that is never necessary because object is always present as the root
of the class hierarchy. It might be more consistent to require the
parentheses, but that's not obvious to me.
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/ZQV7NECJZFXHJWNSTJAKDNL2R2XLFZXT/
Code of Conduct: http://python.org/psf/codeofconduct/