Python order of execution
execution, python
Solution
The only thing I can think of that may surprise some people is:
def test():
try:
return True
finally:
return False
print test()
Output:
False
`finally` clauses really are executed last, even if a `return` statement precedes them. However, this is not specific to Python.
Problem
I was wondering if Python has similar issues as C regarding the order of execution of certain elements of code. For example, I know in C there are times say when it's not guaranteed that some variable is initialized before another. Or just because one line of code is above another it's not guaranteed that it is implemented before all the ones below it. Is it the same for Python? Like if I open a file of data, read in the data, close the file, then do other stuff do I know for sure that the file is closed before the lines after I close the file are executed?? The reason I ask is because I'm trying to read in a large file of data (1.6GB) and use this python module specific to the work I do on the data. When I run this module I get this error message: ``` File "/glast01/software/ScienceTools/ScienceTools-v9r15p2-SL4/sane/v3r18p1/python/GtApp.py", line 57, in run input, output = self.runWithOutput(print_command) File "/glast01/software/ScienceTools/ScienceTools-v9r15p2-SL4/sane/v3r18p1/python/GtApp.py", line 77, in runWithOutput return os.popen4(self.command(print_command)) File "/Home/eud/jmcohen/.local/lib/python2.5/os.py", line 690, in popen4 stdout, stdin = popen2.popen4(cmd, bufsize) File "/Home/eud/jmcohen/.local/lib/python2.5/popen2.py", line 199, in popen4 inst = Popen4(cmd, bufsize) File "/Home/eud/jmcohen/.local/lib/python2.5/popen2.py", line 125, in __init__ self.pid = os.fork() OSError: [Errno 12] Cannot allocate memory >>> Exception exceptions.AttributeError: AttributeError("Popen4 instance has no attribute 'pid'",) in <bound method Popen4.__del__ of <popen2.Popen4 instance at 0x9ee6fac>> ignored ``` I assume it's related to the size of the data I read in (it has 17608310 rows and 22 columns). I thought perhaps if I closed the file I opened right after I read in the data this would help, but it didn't. This led me to thinking about the order that lines of code are executed in, hence my question. Thanks