<div dir="ltr">I've started working on a PEP for this since most people seem to be for it. Will see how it turns out.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 10, 2017 at 2:13 PM, Joao S. O. Bueno <span dir="ltr"><<a href="mailto:jsbueno@python.org.br" target="_blank">jsbueno@python.org.br</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I am definetelly -1 to this idea.<br>
<br>
But since you are discussing this seriously, one nice thing is to<br>
recall how Javascript does that:<br>
`function <name> () ` is an expression that returns the created<br>
function, and thus can be assigned to anything on<br>
the left side.<br>
<br>
Of course, that would throw us back to a way of thinking of inline<br>
definition of multiline functions -<br>
which is another requested and unresolved thing in Python.<br>
<br>
(But we might require the `def` statement to still be aligned, at<br>
least style-wise, and require<br>
people to write<br>
<br>
Foo.foo =\<br>
def (self, ...): ...<br>
<br>
)<br>
<br>
That said, this possibility in Javascript is the source of severe<br>
inconsistencies in how functions are declared across different<br>
libraries and projects, and IMHO, makes reading (and writting) a real pain.<br>
<br>
(And, as stated above, a two line decorator could make for the patching -<br>
it does not need to have such an ugly name as "monkey_patch" - it<br>
could be just "assign" instead)<br>
<br>
     js<br>
    -><-<br>
<div class="HOEnZb"><div class="h5"><br>
On 10 February 2017 at 09:51, Steven D'Aprano <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>> wrote:<br>
> On Fri, Feb 10, 2017 at 10:05:30PM +1100, Chris Angelico wrote:<br>
><br>
>> * What would the __name__ be? In "def ham.spam():", is the name "spam"<br>
>> or "ham.spam"?<br>
><br>
> "spam" of course, just like it is now:<br>
><br>
> py> class Ham:<br>
> ...     def spam(self):<br>
> ...             ...<br>
> ...<br>
> py><br>
> py> Ham.spam.__name__<br>
> 'spam'<br>
><br>
><br>
> You might be thinking of __qualname__:<br>
><br>
> py> Ham.spam.__qualname__<br>
> 'Ham.spam'<br>
><br>
><br>
>> Or say you have "def x[0]():" - is the name "x[0]" or<br>
>> something else?<br>
><br>
> I wouldn't allow that. I feel that "any assignment target at all" is an<br>
> over-generalisation, a case of YAGNI.<br>
><br>
> It is relatively easy to change our mind and add additional cases in the<br>
> future, but very difficult to remove them if they turn out to be a<br>
> mistake.<br>
><br>
> My intuition tells me that we should allow :<br>
><br>
>     def name dot name (args):<br>
><br>
> possibly even more than one dot:<br>
><br>
>     def name dot name dot name ... (args):<br>
><br>
><br>
> but no additional cases:<br>
><br>
>     # syntax error<br>
>     def spam[0]function(): ...<br>
><br>
><br>
><br>
><br>
> --<br>
> Steve<br>
> ______________________________<wbr>_________________<br>
> Python-ideas mailing list<br>
> <a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
> Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
</div></div></blockquote></div><br></div>