Python解释器版本介绍以及python解释器启动参数介绍 – 21运维
通知: .-...

Python解释器版本介绍以及python解释器启动参数介绍

python 21运维 1001浏览 0评论

1,Python解释器几种实现版本
1) CPython
我们装完Python后,默认解释器就是CPython,也是官方默认解释器。CPython是C语言写的,当执行代码时会将代码转化成字节码(ByteCode),也就是在程序目录所看到以.pyc后缀的文件。
2) IPython
基于CPython之上的一个交互式解释器,相当于默认解释器的一个增强版,最显著的功能就是自动补全,挺好用的。
3) PyPy
PyPy本身是由Python编写的,使用了JIT编译器(即时编译器)技术,当执行代码时JIT编译器将代码翻译成机器码。性能相比CPython要好。JAVA也采用了JIT编译器。
4) Jython
Jython是由JAVA编写的一个解释器,可以把JAVA模块加载到Python的模块中使用,也可以把Python代码打包成JAR包,意味着允许用Python写JAVA程序了。当执行代码时会将代码转化成JAVA字节码,然后使用JRE( Java Runtime Environment)执行。
5) IronPython
在.NET平台上工作的Python语言。

 

2,Python代码执行过程
大致流程:源代码编译成字节码(.pyc文件)–> Python虚拟机 –> 执行编译好的字节码 –> Python虚拟机将字节码翻译成对应的机器指令(机器码)
运行Python程序时,先编译成字节码并保存到内存中,当程序运行结束后,Python解释器将内存中字节码对象写到.pyc文件中。
第二次再运行此程序时,先从程序文件同级目录中寻找.pyc文件,如果找到,则直接载入,否则就重复上面的过程。
这样好处是,不重复编译,提供执行效率。
1) 字节码
字节码是一种包含执行程序、由一序列op代码/数据对组成的二进制文件。字节码是一种中间码,比机器码更抽象。
2) 机器码
机器码是一种指令集,让CPU可直接解读的数据。也称为原生码

 

3,代码规范化
3.1 代码风格有毛用
个人觉得有以下几个作用:
1) 团队协作
在企业中,往往是一个团队开发一个项目。开发朋友知道,刚入职一家新公司后,领导会先让你熟悉公司的编码规范文档,其目的是让参与项目中的每位成员,在写代码时能够统一标准,避免项目中出现多种编码风格版本,不利于后期维护和交接。
2) 有利于解决问题
草泥马,又出问题了,代码运行不起来了,怎么办?根据报错找百度、谷歌无解…,还是看看代码吧!这里代码怎么会这么写?琢磨了一会,写的什么玩意,太不规范了,注释都没,看来看点局部代码是解决不了问题了,还是梳理代码功能和逻辑关系吧!时间就这样一分一秒过去了,最后结果可能是一个很小的代码不严谨导致,浪费了大把时间!
3) 未雨绸缪
项目功能终于实现了,发布到线上运行也挺正常,过了半年后,突然跑不起来了,赶紧排查问题,代码自己看着都懵逼了,这还是自己写的代码嘛,长的这么不像我!
3.2 编写代码怎么能更规范化?
1) 缩进
Python以空白符作为语句缩进,意味着语句没有结尾符,刚入门的朋友往往因为上下逻辑代码不对齐导致运行报错,在Python中最好以4个空格作为缩进符,严格对齐。
2) 代码注释
据说优质的代码,注释说明要比代码量多,详细的代码说明不管是对自己还是对他人,在后期维护中都是非常有利的。就像一个流行的开源软件,如果没有丰富的使用文档,你认为会有多少人耐心的去花大把的时间研究它呢!
3) 空格使用
在操作符两边,以及逗号后面,加1个空格。但是在括号左右不加空格。
在函数、类、以及某些功能代码块,空出一行,来分隔它们。
4) 命名
模块:自己写的模块,文件名全部小写,长名字单词以下划线分隔。
类:大/小驼峰命名。我一般采用大驼峰命名,也就是每个单词首字母大写。类中私有属性、私有方法,以双下划线作为前缀。
函数:首单词小写,其余首字母大写。
变量:都小写,单词以下划线分隔。
所有的命名规则必须能简要说明此代码意义。
5) 代码换行
按照语法规则去换行,比如一个很长的表达式,可以在其中某个小表达式两边进行换行,而不是将小表达式拆分,这样更容易阅读。

 

4,交互式解释器
直接执行Python命令就启动默认的CPython解释器:

# python Python 2.7.12 (default, Oct 11 2015, 19:05:35) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print "Hello World" Hello World

配置启动补全:

# pip2.7 install readline 
# pip2.7 install rlcompleter2 
>>> import readline, rlcompleter 
>>> readline.parse_and_bind("tab: complete")

 

python解释器启动参数介绍:

python [ -B ] [ -d ] [ -E ] [ -h ] [ -i ] [ -m module-name ]
[ -O ] [ -O0 ] [ -R ] [ -Q argument ] [ -s ] [ -S ] [ -t ] [ -u ]
[ -v ] [ -V ] [ -W argument ] [ -x ] [ -3 ] [ -? ]
[ -c command | script | - ] [ arguments ]

-O 优化模式
-OO 优化模式,在创建.pyo文件时删除文档字符串
-h 打印所有可用命令行选项的列表
-i 在程序执行后进入交互模式
-v 详细模式,跟踪导入语句
-3 启用将从python 3中删除或更改某些功能的警告
-B 阻止在导入时创建.pyc或.pyo文件
-E 忽略环境变量
-m module 以脚本的形式运行库模块module
-Qarg 指定python 2中除法运算符的行为,值为-Qold(默认值),-Qnew,-Qwarnall之一

-s 阻止将用户站点目录添加到sys.path
-S 阻止包含site初始化模块
-t 报告关于不一致的标签使用警告
-tt 由于不一致的标签使用而导致TabError异常
-u 未缓冲的二进制stdout和stdin
-U Unicode字面量,所有字符串字面量都以Unicode形式处理(仅在python 2中使用)
-V 打印版本号并退出
-x 跳过源程序的一行
-c cmd 以字符串形式执行cmd
-0(数字) 关闭程序中的assert

 

关于解释器 介绍部分取于李振良的《Python基础教程》。

转载请注明:21运维 » Python解释器版本介绍以及python解释器启动参数介绍

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址