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

调用python脚本时,是否将整个脚本加载到终端/命令提示符中?,python,file,terminal,Python,File,Terminal,为了学习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 RET

为了学习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
令我惊讶的是,我成功地写入了存储脚本的同一个文件。为什么这样做有效?脚本是否在解释开始前加载到终端

另外,我问这个问题主要是因为我认为python是解释的,而不是编译的。因此,永远不会创建代码的对象文件。我认为脚本的任何编译版本都不会被创建


编辑:我想问题的第二部分已经在本节中讨论过了。

这就是为什么计算机有内存。加载程序时,程序将从永久性存储器(硬盘驱动器、ssd)读取并进入内存,在内存中,CPU处理程序的速度要快得多

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

对于较大的程序,CPU将需要将多个“页面”的代码从硬盘复制到内存中,在程序启动后很长一段时间内请求特定页面的源代码,而该页面不再可用时,您可能会遇到问题


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

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

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

可能重复的