Python学习手册-第一部分使用入门

本文详细解析Python代码的运行过程,包括字节码生成、Python虚拟机(PVM)执行及跨平台原理。探讨冻结二进制文件的生成与应用,以及Python模块的导入机制,包括模块的执行时机、属性调用、reload使用场景和环境变量配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python学习手册的特点是内容全面,叙述详尽,作为浏览Python全貌的读物来讲比较合适。本人看的是中文第四版,看外文编程书籍的中译本的一个最大的问题就是翻译的文字总是比较生硬,甚至不好理解。无奈自己英文并不好,看英文版花的时间会多一些。
1.Python代码运行过程
Python将每一条语句载入,翻译为字节码,然后转发到Python虚拟机(PVM)中运行。
一条一条语句逐一运行,所以他是一个动态语言。字节码是介于自然语言和机器码之间的编码,他的运行效率低于二进制的机器码(CPU指令集),但是与平台无关,这就是Python跨平台的原因之一。另一个原因就是Python的实现大部分是CPython实现底层语言是ANSI C。文件夹中的.pyc文件就是字节码文件,如果程序不修改再次运行,他会直接载入pyc文件运行而不是源文件,这样提高载入效率。
Python语言本身并不包括他的运行,所以上述运行机制是目前比较主流的方式,随着技术的进步,也会在更新。
2.冻结二进制文件
Python文件开发结束后,也可以使用冻结二进制工具,将字节码,PVM和其他支持文件打包,生成一个可执行文件。由于包含PVM,这个文件可能比较大,但是目标机器不安装Python环境就可以运行。常用的工具是py2exe和pyinstaller。
3.模块简介
调用模块的文件被称为顶层文件,他的命名应该为脚本(script)。被调用的文件被称为模块,必须以py为后缀。在UNIX系统中,脚本的第一行有#!/usr/local/bin/python 这里虽然是注释但是也是有用的,告诉系统,解释器在哪里。
import模块时,模块被执行,但是只执行这一次,后面即使修改了源文件也不会再执行,因为导入是很耗时的工作。比如自己在import caffe 或者import tensorflow的时候,会明显觉得有延时。可以用imp.reload(xxx)使得模块重新被执行,但是reload之前必须保证模块已经被导入。模块被import之后,模块文件中定义的变量,作为这个模块的属性可以被调用,这个模块就是一个命名空间。from module import a这里的a可以直接被使用,但是这样就有变量名重读被覆盖的风险。
dir(module)会列出所有可用的属性,但是会多一些,比如__builtins__,doc,file,__name__和__package__这些是python预定义的内置属性,自己在debuger中可以看到。
模块在导入的时候会默认在当前路径下搜索,所以如果没有在当前路径下会找到不到,除非这个路径在PYTHONPATH这个环境变量中列出,这就是我们安装caffe和tensorflow时要配置环境变量的原因。因为Python会从PYTHONPATH中初始化,并增加python自带的标准目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值