logoalt Hacker News

mattclarkdotnettoday at 4:51 AM3 repliesview on HN

It's still ridiculous. A hypothetical Python4 would treat function declarations as declarations not executable statements, with no impact on real world code except to remove all the boilerplate checks.


Replies

zahlmantoday at 6:53 AM

There is no such thing as a "function declaration" in Python. The keyword is "def", which is the first three letters of the word "define" (and not a prefix of "declare"), for a reason.

The entire point of it being an executable statement is to let you change things on the fly. This is key to how the REPL works. If I have `def foo(): ...` twice, the second one overwrites the first. There's no need to do any checks ahead of time, and it works the same way in the REPL as in a source file, without any special logic, for the exact same reason that `foo = 1` works when done twice. It's actually very elegant.

People who don't like these decisions have plenty of other options for languages they can use. Only Python is Python. Python should not become not-Python in order to satisfy people who don't like Python and don't understand what Python is trying to be.

1718627440today at 10:48 AM

You are describing a completely different language, that differs in very major ways from Python. You can of course create that, but please don't call it Python 4 !

boxedtoday at 6:19 AM

You think so but then you write a function with a default argument pointing to some variable that is a list and now suddenly the semantics of that are... what?

show 1 reply