首页 > 编程知识 正文

如何用python运行py文件,python如何编译运行

时间:2023-05-06 20:01:02 阅读:22603 作者:1808

## Python详细谈论pyc

### 1. Python是解释器型语言?

听说过或正在学习python的学生相信听说过“python是说明语言”。 细心的学生应该会注意到*.pyc的文件。 这个文件是什么时候生成的,如何工作的呢?

今天让我们解开疑问。 如果您不太了解说明性语言和编译性语言,建议您先查看《编程基础——解释型语言和编译型语言》

# #2.运行" pythona.py "时发生了什么

在命令行中输入` ` ` Python a.py ` ` `实际上会激活python解释器,但在实际运行代码之前,必须运行代码解释器进程。

##3.在什么情况下生成pyc

####

* Python版本: 3.6

* Centos 7

#### print_hello.py

打印(iam ) __name_ ) )

打印(hello ) )。

#### import_hello.py

import print_hello

直接执行####脚本:不生成

[ root @ teach tmp ] # python print _ hello.py

I am __main__

你好

[root@teach tmp]# ls

import_hello.py print_hello.py

####模块导入:生成

[ root @ teach tmp ] # python import _ hello.py

I am print_hello

你好

[root@teach tmp]# ls

import _ hello.py print _ hello.py print _ hello.pyc

####注意

在windows上,python3下的pyc文件是在当前目录下生成的__pycache__目录

感兴趣的同学可以自己测试一下

### 4. pyc设计的目的

测试表明,只有将文件作为模块导入时才会生成pyc文件。 也就是说,Python解释器认为只有import执行的模块需要重用。

生成pyc文件的好处很明显,在多次运行程序时,不需要重新解释模块。

如果需要直接运行的print_hello.py文件也需要重复生成pyc文件,该怎么办? python提供了一种方法。

### 5. pyc的有效期限

* Python解释器将模块持久化为pyc文件,但如果模块发生更改该怎么办? 需要手动删除吗?

查看源代码后,可以得出以下结论

写入pyc文件时,写入了Long型变量。 变量的内容是文件的最后修改日期

*每次加载时,检查保存py和pyc文件的上次修改日期,如果不匹配,则重新生成pyc文件

### 6. Python的执行进程

#### PyCodeObject和pyc文件

* PyCodeObject是Python编译器实际编译的结果,并存储在内存中

* pyc文件是PyCodeObject的永久存储方法

####直接执行

* Python解释器解释一次脚本,并将结果保存到内存中的PyCodeObject中

*程序执行

####导入

导入Python程序后,首先在硬盘上搜索pyc文件

如果找到pyc文件并确认该文件是最新的,请继续使用

*如果找不到,或者py文件发生更改,请说明模块,将结果写回pyc文件后再使用

###一些启示

其实,了解Python程序的运行过程对大多数程序员,包括Python程序员来说意义不大。 那么,真正有意义的是,从Python解释器的做法中能学到什么,我认为有以下几点。

a .实际上,Python是否另存为pyc文件与设计缓存系统时相同。 仔细想想什么本来就值得扔到缓存里,什么才不值得扔到缓存里。

b .在运行耗时的Python脚本时,如何稍微缩短程序的运行时间是将模块与主模块断开连接。 (虽然这往往不是瓶颈)

c .在设计软件系统时,是否也应该将复用和非复用分开处理。 这是软件设计原则的重要部分。

d .在设计缓存系统(或其他系统)时,如何防止程序过期? 其实,Python的解释器也为我们提供了特别普遍有效的解决方案。

##参考

[博客园-飞林沙] 65http://www.cn blogs.com/xsd DM/archive/2012/05/14/2498728.html ]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。