![](/img/trans.png)
[英]Find out if a python script is running in IDLE or terminal/command prompt
[英]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.