On 01/-10/-28163 02:59 PM, Aivar Annamaa wrote:
Hi!

I'm looking for a trick or hidden feature to make Python 3 automatically
call a "main" function but without programmers writing `if __name__ ==
"__main__": ...`

I found rejected PEP 299, but i thought that maybe there's something new
already.

Here's why I want such a thing:
I'm teaching introductory programming course with Python. I've seen that
global variables attract beginners like honey attracts bees and this makes
teaching function parameters harder. When students learn functions, they
usually write their function definitions and function applications in the
same scope -- in top-level of the module (don't know the correct term for
it). This has the downside, that any variable introduced in top-level is
automatically visible in function definitions and I have hard time
convincing students not to use those variables in functions directly.

I've been thinking that it might be better for teaching if all program code
would be in functions. This would make "Hello World" a bit more difficult,
but would help teaching the "real thing" ie. functions.

best regards,
Aivar

It's not clear if you're asking for a new fork of the language, or just wanting to keep people from bad habits.

Like it or not, there are plenty of globals already there, one of them being __name__ . All the built-ins are effectively global, and so is any function they define at top-level. Likewise any top-level class, and any symbols imported with import or with from/import. So I consider it impractical for the language to do something that self-discipline is required for.

Is it explaining the if statement that's the problem? If so, you could have them do an unconditional main(sys.argv) at the bottom of their file, and not bother putting an if statement in front of it. Then when you get to user-written modules, you could introduce the if __name__ and explain its need.

DaveA




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to