
On 2/1/2013 12:21 AM, Jason Keene wrote:
Both class and function definitions produce callable objects that are assigned to a name with nearly identical syntax. I don't think your analogy with import/break statements is valid. Additionally, both definitions produce very similar byte codes:
3 MAKE_FUNCTION 0 6 STORE_FAST 0 (my_func)
9 MAKE_FUNCTION 0 12 CALL_FUNCTION 0 15 BUILD_CLASS 16 STORE_FAST 0 (MyClass)
The only argument I see for requiring empty parens in function definitions is a historical one.
That's because you're ignoring the main one: function calls require parens, so function definitions also require them. --Ned.
On Thursday, January 31, 2013, Ben Finney wrote:
Jason Keene <jasonkeene@gmail.com <javascript:;>> writes:
> In a way they do the same thing, they both create an object > (function/class) from a suite and assign it to the name given after the > keyword (def/class). Sure they do totally different things with the suite > in creating the object, but in essence it's a name assignment.
In a way, 'import' and 'break' do the same thing, they trigger the compiler to compile a particular set of code bytes. Sure the code bytes do totally different things, but in essence it's a statement.
Less facetiously: You can blur your vision as much as you like to make 'class' and 'def' look similar, but that doesn't diminish the importance of the distinctions you're ignoring.
-- \ "Always do right. This will gratify some people, and astonish | `\ the rest." ---Mark Twain | _o__) | Ben Finney
_______________________________________________ Python-ideas mailing list Python-ideas@python.org <javascript:;> http://mail.python.org/mailman/listinfo/python-ideas
_______________________________________________ Python-ideas mailing list Python-ideas@python.org http://mail.python.org/mailman/listinfo/python-ideas