On Thu, May 27, 2021 at 07:13:56PM -0700, Brendan Barnwell wrote:
On 2021-05-27 14:33, Steven D'Aprano wrote:
But even if we did have actual constants, how does that help get static *variables*, you know, things that aren't constant but can vary?
All of those use cases can already be handled with a class that stores its data in an attribute.
And with one sentence you have just explained why Python doesn't have closures or generators. There is nothing that they do that can't be handled by a class.
Oh wait, Python does have closures (since version 1.5) and generators (since 2.2). Maybe your argument "just use a class" isn't quite as convincing as you hoped.
(I actually love classes. I just don't think that every function should be a class.)
We're not using Java. We have first class (pun intended) functions, and they are, perhaps, even more important than classes. They're certainly easier to right and more efficient for many purposes. Instead of writing a minimal bundle of
* a class * with an init method * and a call method * and then create an instance
this proposal will allow us to encapsulate that in a single function, just as closures and generators do.