Python基础手册3

 百家乐-操作     |      2020-05-06 20:34

尽管此更改现在存在于Kodi 19的夜间构建中,但这确实意味着“矩阵”中的故障。

相关的性能问题

和C/C++这类完全编译语言相比,Python的工作中没有 “build” 和 “make” 操作,也就是没有将源码编译成可以直接在机器上运行的二进制代码的过程。而且Python解释器中间形成的字节码并不是CPU可以直接运行的二进制代码,PVM仍然需要解释字节码成为二进制码,再交由CPU运行。所以Python代码无法运行的像C/C++一样快。

而最大的问题是转换意味着大量插件将不再起作用,但这还不是全部。该团队表示,“还有一些问题需要核心开发人员知识来解决。自从使用Python 3以来,尤其是在所有Windows平台上都存在一些困难。用于UWP(Xbox)的Kodi版本根本无法编译,需要有人来支持。某些库(例如Pillow,PyCryptodome,cTypes等)也存在问题,缺少或不兼容的版本,因此依赖于它们的那些附加组件将无法运行,从而导致无法在Windows上进行测试。”

(1)字节码编译

当我们运行Python代码时,Python解释器内部会先通过词法分析器将文件中的每一条代码语句分解为单一步骤,然后编译成字节码的形式。编译只是一个简单的翻译步骤,而且字节码是属于源代码层次范围内的底层代码,是与平台无关的,所以编译好的字节码是可以跨平台运行的。这些字节码可以提高执行速度,比起原始的源代码语句,字节码的运行速度要快很多。
如果Python进程在机器上拥有写入权限,那么它将把编译好的字节码保存为一个以 .pyc 为扩展名的文件。Python这样做是作为一种启动速度的优化,下一次运行程序的时候,如果你在上次保存字节码之后没有修改过源代码,Python将会直接加载 .pyc文件,并跳过编译这个步骤。如果你修改了源代码,下次运行程序时,字节码文件将自动重新创建。

此外,Kodi 团队也警告称,“在我们解决这些问题之前,事情会变得有些生疏,所以请耐心等待。”

1、Python代码的执行过程

将我们编写好的Python代码放到解释器中运行,此过程主要分为两步,第一步是将源码编译成“字节码”,第二步是将编译好的字节码转发到Python“虚拟机”中运行。当然对于程序员来说,这两步都是隐藏的。

据悉,Python 2将于2020年1月1日寿终正寝,为此,Kodi基金会已迈出了为所有基于Python的附加组件切换到Python 3解释器的步骤。目前,每晚为Kodi 19“ Matrix”构建的版本都在使用Python 3解释器运行所有基于Python的加载项。

(3)使用 PythonIDE(pycharm)编辑Python文件

Python的IDE使用方式和其他语言并无大的区别,这里我们通常使用pycharm软件在windows系统下开发Python程序。
由于Python是可以跨平台运行的(Python文件直接运行在虚拟机上,不用关心具体硬件和操作系统),所以通常我们在Windows环境下开发的脚本可以直接运行在Linux环境下。对于在Linux环境下开发的大型项目或使用框架开发的项目,可能需要在Linux环境下运行项目而且可能有很多的环境依赖。这时我们甚至可以配置pycharm直接同步服务器端的代码到本地,还可以配置使用服务器端的开发环境,在本地直接执行远端服务器的运行命令,并将远端的运行结果同步回本地。
关于pycharm软件的使用我们会专门出一节教程。

图片 1

Kodi团队解释称,“对于我们来说,这种迁移是一个巨大的变化,需要做很多工作才能使功能再次恢复正常。这也需要迅速完成,因为我们需要在Python 2生命终止之前完成。”

(2)使用解释器运行Python文件

Python 解释器有些操作类似 Linux shell,当在shell中直接调用解释器时为交互模式(以stdin作为标准输入),它交互的解释并执行命令;当使用文件名作为参数或以文件作为标准输入调用解释器时,它读取文件并将文件作为脚本执行。

图片 2

Python 脚本使用扩展名 .py,Linux平台还可以在不明确指定 Python 解释器的情况下,直接运行Python文件。 这种情况下你需要在你的脚本的第一行指定我们所使用的Python解释器的路径:#! /usr/bin/env python。

图片 3

图片 4

当然我们需要确保Linux的 env 环境变量的 PATH 变量中包含Python解释器的路径。

图片 5

注意:在Linux系统中,我们直接执行Python脚本文件时,需要文件对执行用户有执行权限。

图片 6

启动 Python 解释器还可以使用 python -c command [arg] ...,这种方法可以在 命令行 执行 Python 语句,类似于 shell 中的 -c 选项。由于 Python 语句通常会包含空格或其他特殊 shell 字符,一般建议将 命令 用单引号包裹起来。

图片 7

有一些 Python 模块也可以当作脚本使用。你可以使用 python -m module [arg] ... 命令调用它们,这类似在命令行中键入完整的路径名来执行 模块 源文件一样。

图片 8

使用脚本文件时,经常会运行脚本然后进入交互模式。这也可以通过在脚本之前加上 -i 参数来实现。

图片 9

调用解释器时,脚本名和附加参数会传入到一个名为 sys.argv 的字符串列表。通过导入 sys 模块,执行 sys.argv[0],sys.argv[1]... 获取这个列表中的元素。列表的长度大于等于1,没有给定脚本和参数时,它至少也有一个元素:sys.argv[0] ,此时他为空字符串。
脚本名指定为 '-' (表示标准输入)时, sys.argv[0] 被设定为 '-';使用 -c 指令 时, sys.argv[0] 被设定为 '-c';使用 -m 模块 参数时,sys.argv[0]被设定为指定模块的全名 -c指令 或者 -m 模块 之后的参数不会被 Python 解释器的选项处理机制所截获,而是留在 sys.argv 中,供脚本命令操作。

图片 10

图片 11

下载地址:

一、Python解释器

我们编写的Python代码都要放在Python解释器上运行,解释器是代码与计算机硬件之间的软件逻辑层。
当我们在操作系统上安装好Python之后,它就包含了保证Python运行的最小化组件:解释器 和 标准库。根据选用的Python版本的不同,解释器本身可以用C语言实现(Python的官方实现版本)、Java语言实现或者其他的形式。无论使用采用什么版本,编写好的Python程序代码必须放在解释器中运行。