gpt4 book ai didi

Python 的执行顺序

转载 作者:太空狗 更新时间:2023-10-30 01:40:53 27 4
gpt4 key购买 nike

我想知道 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com