了解Python
Python
是一种扩展性强大的编程语言,1989年,荷兰人Guido van Rossum
发明了一种面向对象的 解释性
高级编程语言,将其命名为Python
编译型与解释型的区别
编译型:需要先将代码进行编译(编译器),转换为汇编语言,然后再转换为机器语言
-
代表:
C,C++,Golang
-
优点:执行速度快
-
缺点:跨平台可移植性差
- 硬件:
cpu
(有自己的指令集)intel,amd
复杂指令集 高性能高功耗- ARM 精简指令集 一般用于手机,平板 低功耗
- 软件(不同的系统上需要自己适配)
windows
linux,mac
- 硬件:
解释型:直接在运行的时候转换为机器语言
-
代表:
python,php,java,ruby,c#
-
优点:跨平台好,可移植性强
-
缺点:执行速度慢(慢是指解释型语言和编译型语言对比的情况)
编译型与解释型图解:
Python的版本
Python自发布以来,主要有以下三个版本
1994年发布的Python 1.0版本(已过时)
2000年发布的Python 2.0版本(已停止更新)
2008年发布的Python 3.0版本(目前已更新到3.8)
对于版本的选择,我们可以选择Python 3.0进行学习
Python 2版本的代码转换为Python 3的代码
首先找到Python给我们提供的官方工具2to3.py
2to3.py
工具使用步骤如下:
-
找到
2to3.py
文件,该文件保存在Python安装路径下的Toolsscripts
子目录中 -
将
2to3.py
文件复制到要转换代码所在的目录下 -
在
CMD
窗口中先切换到需要转换代码的路径例:转换的文件名为
demo.py
-
在
CMD
窗口中输入命令:python 2to3.py -w demo.py
之后就可以查看到
demo.py
所在的目录中,创建了一个名称为demo.py.bak
文件,同时将demo.py
转换为了python 3对应的代码
Python的应用领域
- Web开发
- 大数据处理
- 人工智能
- 自动化运维开发
- 云计算
- 爬虫
- 游戏开发
- 网络编程
python的优缺点
优点
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多核问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折中解决方法,我们在以后线程和进程章节里再进行详细探讨。