1.2 Python语言的特点
1.面向对象
Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程,使得编程更加灵活[2]。
2.内置数据结构
数据结构由相互之间存在一种或多种关系的数据元素以及元素之间的关系组成。Python本身自带的数据结构包括列表、元组、字符串、字节、字节数组、集合、字典7种内置数据结构,且它们都是可迭代对象。
3.简单易学
Python的语法简单优雅,甚至没有像其他语言的大括号、分号等特殊符号,代表了一种极简主义的设计思想。同时,Python内置多种高级数据结构,实现了列表、元组、字典和集合等高级数据结构,这些结构在传统C、Java等语言中需要用户自定义结构。Python非常适合阅读,并且容易理解。此外,Python虽然基于C语言编写,但是摒弃了C中非常复杂的指针,简化了Python语法。
4.语言健壮
Python提供了异常处理机制,能捕获程序的异常情况。此外Python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能够帮助程序员调试程序。
5.可移植性
Python的开源本质使得它已经被移植在许多平台上(经过改动使它能够在不同平台上工作)。如果在编写程序时避免使用依赖于系统的特性,那么这些Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于Linux开发的Android平台。
6.易扩展性
Python出于一种自由的设计思想,没有抽象类,也没有其他语言里private、public、protect这些设定,但在Python中同样也可以通过封装实现私有、公有、抽象这些设定。假如让所有默认接口raise异常,那么这个类就在一定意义上成为了抽象类。虽然抽象类的适用范围很广,但是并不是任何情况下都优于非抽象类,于是Python让使用者自己选择是否使用抽象类。
当然,这只是Python内在的一个细节,实际上Python的可扩展性不仅仅表现在对内的设计思想上,还表现在对外不同语言之间的配合使用效果上。例如在游戏开发中,游戏的服务端可以用C作为底层游戏引擎,Python作为逻辑脚本,这样可以非常方便地调用C编写的引擎接口,仿佛C语言的底层不存在一样。
7.动态性
Python的动态性和多态性是Python语言简洁灵活的基础。在Python中,类型是在运行过程中自动决定的,而不是通过代码声明。这意味着在Python中没有必要事先声明变量,变量名没有类型,类型属于对象而不是变量名。从另一方面讲,对象知道自己的类型,即每个对象都包含了一个头部信息,这一头部信息标记了这个对象的类型。Python语言的动态性优化了人的时间而不是机器的时间,可以大幅提高程序员的生产力。
8.解释型
大多数计算机编程语言都是编译型语言,在运行之前需要将源代码编译为操作系统可以执行的二进制格式(0110格式的),这样大型项目编译过程非常消耗时间。而Python程序不需要编译成二进制代码,可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于不再需要担心如何编译程序,如何确保连接转载正确的库等,这使得Python使用变得更加简单。
9.应用广泛
Python目前广泛应用在多个领域,具体如下。
(1)游戏编程:可以在Pygame系统中使用Python对图形和游戏进行编程。
(2)串口通信:PySerial扩展在Windows、Linux及更多系统上进行串口通信,系统是由相互联系、相互作用的若干要素按一定的规则组成并具有一定功能的整体。
(3)图像处理:用PIL、PyOpenGL、Blender、Maya和一些其他工具进行图像处理管理。
(4)机器人控制:用PyRo工具包进行机器人控制编程。
(5)人工智能:使用神经网络仿真器和专业的系统Shell进行AI编程图像处理;用PIL、PyOpenGL、Blender、Maya和一些其他工具进行图像处理。
(6)自然语言分析:使用NLTK包进行自然语言分析图像处理。