Python概述-Day1
一、Python是啥?
Python,是一种面向对象、解释型的计算机程序设计语言。由荷兰人Guido van Rossum于1989年开发。
二、Python能干啥?
WEB开发:Django\Pyramid\Tornado\Bottle\Flask\WebPy
网络编程:Twisted\Requests\Scrapy\Paramiko
科学运算:SCIPy\Pandas\Ipython
GUI图形开发:wxPython\PyQT\Kivy
运维自动化:Openstack\SaltStack\Ansible\腾讯蓝鲸
三、Python是一门什么样的语言?
编程和语言主要从以下几个角度为进行分类,编译型和解释性、静态语言和动态语言、强类和弱类型定义语言,每个分类代表什么意思呢,下面一起看一下。
1、编译器和解释器的区别?
计算机不能直接认识并执行我们写的语言,它只能认识机器语言(二进制形式),所以有两种方式进行翻译:
- 编译器是把源程序的每一条语言都编译成机器语言,并保存成二进制文件,这样运行时计算计算机可以直接以机器语言来运行此程序,速度很快;
- 解释器则是只在执行程序时,才一条一条的解释给计算机来执行,所以执行速度是不如编译后的程序运行的块;
2、编译型语言和解释型语言的优缺点:
编译型
- 优点:编译器一般会有预编译的过程对的代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应运行环境生成机器码,不同的操作系统之间移动也会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型:
- 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

(常见编译型和解释型语言)
3、动态语言和静态语言:
- 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
- 静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
4、强类型定义语言和弱类型定义语言:
- 强类型定义语言:强制数据类型定义的语言。就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那边它就永远是个数据类型。举个例子:如果你定义了一个整形变量a,那么程序根本不可能将a当做字符串类型处理。强类型定义语言是类型安全的语言。
- 弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反,一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
5、小结:
通过上面这些介绍,我们可以得出,Python是一门动态解释型的强类型定义语言。那这些基因使其成就了Python的哪些优缺点呢?我们继续往下看。
四、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实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原声线程。在Linux为Pthread,在windows上为Win thread,完全由操作系统调度线程的执行。一个Python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多编程的并行执行。

浙公网安备 33010602011771号