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

标签 python file terminal

我一直在关注“Learn python the Hard way”来学习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是解释型的而不是编译型的。因此代码的目标文件永远不会创建。我认为从未创建过该脚本的编译版本。

编辑:我认为问题的第二部分已经在这个 stackoverflow question 中讨论过。 .

最佳答案

这就是计算机有内存的原因。当您加载程序时,它会从持久存储(硬盘驱动器、SSD)读取到内存中,CPU 的处理速度要快得多。

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

对于较大的程序,CPU 需要将多个“页面”的代码从硬盘驱动器复制到内存中,如果在一段时间内请求源代码的特定页面,那么您可能会遇到麻烦。您的程序已启动,但不再可用。

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

关于python - 调用 python 脚本时,它是否将完整的脚本加载到终端/命令提示符中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24110993/

相关文章:

java - Spring 兼容 scrypt 密码与 python passlib

mysql - 无法通过socket '/tmp/mysql.sock'连接到本地MySQL服务器(2)

c# - 自定义文件属性

arrays - 将数据从文件读取到数组中以在 Perl 脚本中进行操作

file - Hadoop连接文件以递归方式维护目录结构

相当于 ~/.bashrc 的 Python

macos - 双击并选择 Terminal.app 中的路径(包括 '/' )

python - 为什么TensorFlow训练过程中变量值没有改变?

python - C++:从用户输入调用函数

python - 使用 python : saving objects of the "pooled" functions 进行多处理