繁体   English   中英

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

[英]When calling a python script, does it load the complete script into the terminal/command prompt?

我一直遵循“学习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

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

PS我主要是问这个问题,因为这是我的想法,解释和不编译python。 因此,永远不会创建代码的目标文件。 我认为从未创建过该脚本的编译版本。

编辑 :我认为问题的第二部分已经在这个stackoverflow 问题中进行了讨论。

这就是为什么计算机有内存。 加载程序时,将从持久性存储(硬盘驱动器,ssd)中读取程序,并将其读取到内存中,以便CPU更快地使用它。

对于小型程序,在程序运行时覆盖源代码没关系。

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

编辑:正如cchristelis所述,Python文件被编译为.pyc。 同样,此pyc文件保留在内存中,如果将.pyc写入磁盘,则无需再次在下次启动程序时从.py对其进行编译。

在执行之前,您的python代码实际上已被编译为字节代码。 大家都注意到一个.pyc文件吗? 该文件包含代码的编译版本。

因此,一旦程序运行,字节码就会进入RAM。 到那时,不再需要原始源代码。 如果它消失了,只有你不能重新运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM