调用python脚本时,它是否将完整的脚本加载到终端/命令提示符中?

时间:2014-06-08 21:25:04

标签: python file terminal

我一直在学习python学习python的“学习python”。以下脚本直接取自本书练习16:

#Exercise 16: Reading and Writing Files
from sys import argv
script, filename = argv
print "We're going to erase %r." %filename
print "If you don't want that, hit (^C)."
print "If you do want that, hit RETURN."
raw_input("?")

print "Opening the file..."
target = open(filename,'w')

print "Truncating the file. Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line1: ")
line2 = raw_input("line2: ")
line3 = raw_input("line3: ")

print "I'm going to write these to the file."

target.write(line1 + "\n" + line2 + "\n" + line3 + "\n")

假设存储上述脚本的文件是'ex1.py'。我决定在Ubuntu终端中使用以下命令运行脚本文件

$ python ex1.py ex1.py

令我惊讶的是,我成功地写了存储脚本的同一个文件。为什么这样做?在解释开始之前脚本是否加载到终端?

P.S。我主要是问这个问题,因为我的想法是python被解释而不是编译。因此,永远不会创建代码的目标文件。我认为没有创建脚本的编译版本。

修改:我认为问题的第二部分已经在此stackoverflow question中进行了讨论。

2 个答案:

答案 0 :(得分:1)

这就是计算机有内存的原因。当您加载程序时,它会从持久存储(硬盘驱动器,ssd)和内存中读取,在CPU中使用它会快得多。

对于小程序,在程序运行时覆盖源代码并不重要。

对于较大的程序,CPU需要将代码的多个“页面”从硬盘驱动器复制到内存中,这样在遇到源代码的特定页面很长一段时间后,您可能会遇到麻烦你的程序已经启动,不再可用。

编辑:正如cchristelis所提到的,Python文件被编译成.pyc。同样,这个pyc文件保存在内存中,如果将.pyc写入磁盘,那么下次启动程序时不必再从.py编译它。

答案 1 :(得分:0)

您的python代码在执行之前实际上已编译为字节代码。你有没有注意到.pyc文件?该文件包含代码的编译版本。

因此,一旦程序运行,字节码就在RAM中。此时不再需要原始源代码。只有你不能重新运行它...