我想知道Python是否与C有关的某些代码元素的执行顺序有类似的问题。Python执行次序
例如,我知道用C有次说,当它不能保证某些变量在另一个之前初始化。或者仅仅因为一行代码高于另一行代码,并不能保证它在所有代码之下执行。
对于Python它是一样的吗?就像我打开一个数据文件,读入数据,关闭文件,然后执行其他的操作,我知道文件在我关闭文件之后的行被执行之前关闭了吗?
我之所以这样问是因为我想在一个大的数据文件(1.6GB)的阅读和使用特定于我对数据做好了这条巨蟒模块。当我运行这个模块,我得到这个错误信息:
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
我以为它涉及到我读了(它有17608310行和22列)中的数据的大小。 我想也许如果我关闭了我读取数据后立即打开的文件,这将有所帮助,但事实并非如此。这让我想到了代码行执行的顺序,因此我的问题。
谢谢
我认为你需要更好地解释自己。在C中,给定'f(); g();','f()'保证在'g()'之前被评估。在'a = f()+ g();'中,评估顺序未在C中指定.Python保证从左到右的评估:http://docs.python.org/reference/expressions.html#evaluation-订单 – 2010-01-29 15:42:35
'问题'你的意思是'规则',对吧? – KevinDTimm 2010-01-29 15:47:56
是的,我知道我不是很好地解释自己,对不起,它来自于不完全理解这一切,但也试图:) Alok:是的,这基本上是我在想什么。我认为这也延续到文件可能关闭时的情况。我知道我可以说定义了两个不同的函数,并从第一个调用第二个(第二个,我的意思是下面的代码),所以在这个意义上,它也不一定按顺序完成。 kevin:是的,我的意思是规则。我想我只是使用了工作问题,因为它给我麻烦:) – Jamie 2010-01-29 16:45:44