第二章 python通论

2.1.介绍

​ python是一门面向对象、弱类型(变量定义不需要预先声明)、解释性/动态编程语言,同时其同样能实现面向过程式编程和函数式编程;其是一门高级编程语言,对比其他语言来说其更高级即更偏向于人类,故此开发效率更高,由于其是解释性编程语言的特点,造成其与其它解释性编程语言相同的特点---执行效率不高;

2.2 优缺点分析

优点:

​ case1: 可读性高,易于维护;

​ case2: 语法简洁、开发效率高,采用比其它语言1/3-1/5的代码实现相同的功能;

​ case3: python的程序代码运行在pvm上,故此其可移植性好;

​ case4: 丰富的标准库和第三方库,基于这些库能够快速的构建各种功能程序

​ case5: 胶水语言,python能够调用C和C++库,也可以被C C++程序调用;

缺点:

​ 唯一缺点:解释性语言的通病---执行效率不高

2.3 python的用途和应用方向

用途和应用方向:

​ case1: 系统编程

​ case2: 图形化编程

​ case3: 网络编程

​ case4: 数据库编程

​ case5: 科学计算和数据处理

​ case5: web开发

​ case6: 数据挖掘--爬虫

​ case7: 人工智能

2.4 python的实现

2.4.1 cpython:标准的python

​ 基于c语言开发出来的python解释器;目前所说的python即为cpython;

执行过程:

​ python代码--编译-->字节码---->机器码---->执行

说明:

​ python代码编译而成的字节码是C语言能够识别的,故此标准的python能够与c代码实现互相调用;

2.4.2 jython: java python

​ 基于java开发出来的python解释器,其将python源代码编译成java的字节码,然后在java的虚拟机jvm上运行,用于实现python代码与java程序的集成;

2.4.3 ironpython:

​ 此种解释器主要是用于让python代码与window平台的.net框架进行集成;

2.4.4 stackless:

​ 注重并发的python,针对cpython优化器并发性能而来的一款解释器;

2.4.5 pypy:

​ 基于python开发出的一款python的解释器,能够提高程序的运行速度;

执行过程:

​ pypy代码在第一次执行时,会先编译成字节码,然后编译成机器码;此后程序在运行时是直接运行的机器码;这样此后pypy代码的执行不再需要编译过程,执行过程同编译式编程语言,这样对比其他python的实现执行效率更高

2.4.6 psyco:

​ python语言的一个扩展模块,其被作为python解释器的一个插件去运行,可以即时在解释器中对程序代码进行算法优化,提高执行速度;

​ 目前已经停止更新,由pypy替代;

2.4.7 shed skin:

​ python的一种编译器的实现;其能够将python代码转换成c++代码,由c++的编译器完成静态编译后,然后执行,提高了python代码的执行效率;

2.4.8 总结说明

​ python的实现,指的python解释器程序的实现方式,即采用某种编程语言编写编译后的二进制python解释器程序;python编译器的不同,对python代码完全是没有影响的,即虽然python的实现方式有多中,但是python代码的语法规则都是一样的,只是调用的解释器不同仅此而已,python解释器的不同,仅仅用于提高cpython的执行效率或与其他程序代码的交互或其它某种功能的特点;

2.5 python如何执行的

step1:预编译过程

​ python程序第一次运行时,将整个python程序代码---源代码加载到内存中编译成能够直接在解释器(pvm)上运行的字节码,根据该进程是否对操作系统的文件系统是否有写权限决定是否将内存中的字节码存储在指定的位置下;此过程对用户是隐藏的,解释器自动完成此过程;

扩展说明:

python代码编译成字节码是所有的python代码都会执行;但是仅仅只有在python的程序执行入口文件中,导入了其他python文件,才会根据文件系统的权限决定是否将字节码写入到某个位置的文件中;

step2:执行过程

​ 此后解释器读取字节码文件,从上至下,读取一个代码块解释执行一个代码块,迭代执行字节码文件中的每一个代码块;

step3:再次执行

​ 此后再次执行此文件时:对比源代码文件和字节码文件的最近一次修改时间的时间戳标记,判定程序代码是否发生变化,若修改时间戳标记一致则不再需要执行step1中的编译过程,而是直接执行字节码;若时间戳标记不一致则触发step1过程的重新执行,重新编译源代码生成新的字节码文件,然后执行;再次执行时若解释器的版本不一样也会触发step1中的编译过程的再次执行;

扩展说明:

case1:字节码

​ 字节码并非是二进制代码,而是一种与平台无关的能够直接在解释器上执行的中间代码;

​ 其与程序代码中的数据编译后的字节码是完全不同的两个概念;程序代码编译后的字节码是能够直接存储和网络传输的二进制,而预编译的字节码是程序代码的中间代码;两者无任何关系;

case2:字节码的存放路径和文件名

​ 字节码存放在于源代码文件一个目录下,一个名为__pycache__的目录下,一个源代码文件编译后的字节码的文件命名格式为:”源代码文件名.python解释器类型名-解释器的版本.py”;

case3:预编译过程

​ 预编译过程,针对的是整个程序代码文件,将整个程序代码文件编译成字节码,而非仅仅编译一行;预编译是解释性编程语言提高程序执行效率的一种有效的手段;

case4:触发预编译的条件

​ 源代码文件和字节码的最近一次的修改时间戳标记不一致触发预编译的再次执行;

​ 前后两次执行所采用的解释器的类型或版本不一致也会触发预编译过程的再次执行;

case5:关于解释执行过程详细描述

​ 解释执行过程,解释器读取一个字节码代码块解释执行一个字节码代码块;

​ 字节码并非是二进制代码,其在系统底层仍然还要经过一次解释---编译过程,此编译过程调用的是python的解释器完成的编译,如cpython即调用c的编译器在解释执行字节码的过程中,先将字节码编译成能够在cpu上运行的二进制代码,然后执行;

2.6 python IDE

2.6.1 IDE介绍

​ 集成开发环境(IDE--Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。

​ python IDE: pycharm pyenv anaconda 等;

2.6.2 pycharm使用

pycharm快捷键汇总:

1 取消非语法错误标记

​ 右下角小人--->移动高级级别进度条到syntax--->configinspeciton----> 勾选:disable new inspetion by default --->apply

2 配置python脚本模板

​ setting--->editor--->file and code template---->找到python script--->右侧添加代码 ——>apply

3 配合鼠标crtl+滚轮调整代码字体大小

​ setting--->搜索mouse--->genral--->勾选change font size with ctrl+wheel 即可

4 crtl + A 运行代码

​ setting--->keymap--->右侧中间,输入run---->找到run对应的快捷键--->添加crtl+a ——>apply

5 安装插件

​ setting-->plugin--->marketpalce--->安装对应的即可;

6 ctrl + z单行注释快捷键

​ setting--->keymap--->右侧中间,输入line---->找到code-->找到comment with line comment--->添加crtl+a ——>apply

7 换行:

​ enter 行尾换行

​ shift + enter 行任意位置换行

8 pycharm与 vim插件快捷键冲突

​ 方法一:tool--取消勾选vim

​ 方法二: setting--->editor --->emulation--->找到对应的快捷键,修改为undefined或ide即可;

9 多行代码快捷键注释

​ 鼠标选择多行代码,然后crtl + Z 或三引号使用

10 多行代码缩进

​ tool-->取消vim工具---> 鼠标选择多行代码 ———>tab缩进多行代码/shift+tab取消多行代码缩进

11 设置字体

​ setting-->apperance & behavior-->apperance-->选择字体和大小-->apply

2.7 pip国内源

​ 用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2MB/s。
其中,比较常用的国内镜像包括:

(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/

注意:新版ubuntu要求使用https源。

设置方法:(以清华镜像为例,其它镜像同理)
(1)临时使用:
可以在使用pip的时候,加上参数-i和镜像地址(如
https://pypi.tuna.tsinghua.edu.cn/simple),
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas,这样就会从清华镜像安装pandas库。

(2)永久修改,一劳永逸:
(a)Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

(b) windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,然后新建文件pip.ini,即 %HOMEPATH%\pip\pip.ini,在pip.ini文件中输入以下内容(以豆瓣镜像为例):

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com

posted @ 2019-12-10 11:03  大兵0815  阅读(81)  评论(0)    收藏  举报