Python 的执行顺序

标签 python execution

我想知道 Python 在某些代码元素的执行顺序方面是否存在与 C 类似的问题。

例如,我知道在 C 中有时会说不能保证某个变量先于另一个变量初始化。或者仅仅因为一行代码在另一行之上,不能保证它在它下面的所有代码之前实现。

Python 也一样吗?就像我打开一个数据文件,读入数据,关闭文件,然后做其他事情我是否确定在执行关闭文件后的行之前文件已关闭?

我问的原因是因为我正在尝试读取一个大数据文件 (1.6GB) 并使用这个特定于我对数据所做的工作的 python 模块。当我运行这个模块时,我收到了这个错误信息:

    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 列)。 我想也许如果我在读入数据后立即关闭打开的文件,这会有所帮助,但事实并非如此。这让我开始思考代码行的执行顺序,因此我提出了这个问题。

谢谢

最佳答案

我能想到的唯一可能会让某些人感到惊讶的是:

def test():
    try:
        return True
    finally:
        return False

print test()

输出:

False

finally 子句实际上最后执行,即使 return 语句在它们之前。然而,这并不是 Python 特有的。

关于Python 的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162975/

相关文章:

python - 在带 wifi 的公寓中安装 python 包时出错

python - paInt32、paInt16、paInt24、paFloat32 等之间的区别?

python - 关闭 Spyder 中的所有变量资源管理器窗口

python 字符列表附加+

eclipse - 如何设置 eclipse java 调试器中的当前执行行?

javascript - JavaScript 中的脚本执行流程

python - python中的帧类型

python - 使用 openpyxl 插入表格

Phpmyadmin 的 PHP 不执行但其他 php 脚本工作

javascript - 如何与httprequest同步执行Javascript