On Mar 14, 6:37 pm, Alex <[EMAIL PROTECTED]> wrote: > On Mar 13, 6:21 pm, Carl Banks <[EMAIL PROTECTED]> wrote: > > > On Mar 13, 7:02 am, Bruno Desthuilliers <bruno. > > > [EMAIL PROTECTED]> wrote: > > > Alex a écrit : > > > (sni) > > > > > First of all thanks all for answering! > > > > > I have some environment check and setup in the beginning of the code. > > > > I would like to move it to the end of the script. > > > > Why ? (if I may ask...) > > Sure, because of a readability (similar to function declarations in > C). > > > > > > > But I want it to > > > > execute first, so the script will exit if the environment is not > > > > configured properly. > > > > If you want some code to execute first when the script/module is loaded, > > > then keep this code where it belongs : at the beginning of the script. > > > I concur with Bruno's recommendation: stuff you want to do first > > should come first in the script. Things like BEGIN blocks hurt > > readability because you can't identify where execution begins without > > reading the whole file. > > > Having said that, one thing that often happens in Python scripts is > > that all the functions are defined first, then the script logic > > follows. So you could put the meat of your script in a function, then > > the "BEGIN" stuff after that functions: > > > def run_script(): > > # > > # script contained in this long function > > # > > > # Then test preconditions here... > > if os.environ["HELLO"] != "WORLD": > > sys.exit(2) > > > # Then call the run_script functions > > run_script() > > > But having said THAT, I don't recommend you do that with > > preconditions. If the script has a quick early exit scenario, you > > really ought to put that near the top, before the function > > definitions, to clearly show to a human reader what is necessary to > > run the script. > > > Carl Banks > > Hi, > > Maybe i was a little bit unclear... I meant that i wanted to do > something like this: > > #!usr/bin/env python > > check_env() > > from subprocess import * > > class MyClass: > # Class definition > > def check_env(): > # Code > > if __name__ == "__main__": > # Script logic > > The thing is, as i saw, that Python doesn't recognize the > "check_env()" function before it reaches the "def" statement.
You could rearrange it like this and it will work: #!usr/bin/env python def check_env(): # Code check_env() from subprocess import * class MyClass: # Class definition if __name__ == "__main__": # Script logic Or, better yet, do what Arnaud Delobelle suggests. It's not a big deal to move imports down the page a bit, as long as you throw in a few clear comments explaning what you're doing and why. You might also consider putting check_env() in a separate module. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list