《Python硬件编程实战》——1.3 Python的特点

简介:

本节书摘来自华章计算机《Python硬件编程实战》一书中的第1章,第1.3节,作者:李茂 著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 Python的特点

1.3.1 作为脚本语言的优缺点
上面已经介绍过,Python是一门脚本语言,也是一门解释型语言。下面就来简单解释一下作为解释型语言的Python有哪些特点。
1.作为脚本语言的Python的优点
快速开发:不需要编译即可运行
正如前面的解释,写完Python脚本后直接就可以运行而省去编译的步骤,使用起来相对省事和高效。
2.作为脚本语言的Python的缺点
性能相对不是特别强
Python的性能相对一些其他语言(比如C、C++等)来说不是特别强。对于性能要求比较苛刻的某些领域不太适合全部使用Python去实现所有的功能。现在已有的解决方法是:使用相对Python性能更好的其他语言去实现与性能相关的最核心部分的功能,然后再将此部分整合到Python内,这样即可高效地实现程序的功能,又可以很大程度上提高开发的效率。
为何不说是Python性能比较弱
此处之所以说是Python的性能不是特别强,那是相对于更加底层的语言(比如C、C++等)来说的,并不是说Python的性能本身很差。相对而言,C、C++等语言由于是编译型语言并且更加面向底层,所以在性能方面与Python等脚本语言相比,的确会更好一些。但是在现实中实现功能时,很多情况下并不那么关注代码本身的性能高低,而是更加关注完成任务的总体效率。
下面通过一个例子来解释上面这句话的含义。
假如想要写一段代码用于实现一个功能,而下面是所需要花费的时间。
(1)写代码实现功能所花费的时间
写C或C++代码用了2天时间实现了功能。
用Python写代码实现同样的功能只需半天时间。
(2)代码运行所花费的时间
C或C++的性能比Python好20%,运行程序实现功能花费了10秒。
Python代码效率稍差,比C或C++差20%,但运行程序实现功能也只是花费了12秒左右。
(3)完成总体任务所花费的时间
总体上来说使用C或C++完成总体任务花费2天多时间。
总体上来说使用Python完成总体任务只花费半天左右时间。
如果要实现同样的功能,很多用户其实更加关注整体效率。因此,在使用Python可以保持总体效率不太差但可以用更少的时间的前提下,用户肯定会选择Python。此时用户总体感觉就是:还是Python更好用。
除了上述的例子,现实中还有很多类似的情况:80%的用户只是为了实现某些功能,对于相对较小的性能差异并不是很关心,此时我们更倾向于采用Python实现程序的主体功能;而余下的对性能要求比较高的20%的情况则往往是采用C或C++等性能更好的语言去实现。
此外,Python语言本身支持将其他语言(包括C、C++等)通过相关的框架和手段集成到Python中,所以在这种情况下也是可以用Python作为主要语言去实现所需的总体功
能的。
总结:
Python的性能只是相对弱一些但不差,而且多数情况下都能够满足需求,即多数情况下都可以选择用Python去实现自己需要的功能。
当Python性能不能满足要求时,也可以通过采用其他性能更好的如C、C++等语言去实现性能相关部分的功能,然后再集成到Python代码中,这样保持了Python仍然是实现功能的主要语言。
1.3.2 Python自身的特点
除了作为解释型语言的Python自带的优缺点之外,Python语言本身也有其自己的特点。此处讨论Python特点时,也是和评价其他事物一样去和其同类语言对比。
Python相对其他语言一个最大的特点是:代码缩进决定了代码的逻辑关系,而不仅仅是为了代码的美观性。

下面介绍更多的其他特点:

  1. 很多语言内置特性使得Python语言本身很方便编程者使用Python中的字符串可以直接通过数组下标去获得对应子字符串。这类特性是其他很多语言本身所不具有的。Python的此类特点在第4章中会有更加详细的解释。
  2. .一种被广泛采用的胶水语言

Python相对其他语言有很强的粘合能力,其主要指的是Python本身支持很多框架和接口,它允许在Python和其他很多语言之间相互调用。如为了提高性能等,把与性能相关的部分用性能相对更好的其他语言实现,然后再整合到Python中,起到了作为不同语言的“粘合剂”的作用,以此达到提高Python程序整体性能的目的。
3.功能丰富的自带库以及种类和数量繁多且强大的第三方库
除了Python语言本身自带的标准库功能就很丰富、很强大之外,目前还有数量巨大的、各种领域的、功能强大的第三方库函数。
因为Python语言易于使用,所以有越来越多的用户愿意使用和发展Python,很多人把在Python开发期间积累的库函数贡献了出来,如此积累至今,就形成了数量众多且功能强大的第三方库函数。
如上特点对于Python语言的使用者来说有着显而易见的好处:当实现很多功能时,往往不需要重复“造轮子”,而可以找到现成的内置Python库或第三方的Python库去帮助我们实现想要的功能,从而节省我们大量的精力。换句话说,在实现一个复杂的功能时,往往变成了找到合适的库并使用即可,而无需从头到尾去实现一个很复杂的功能,从而节省了很多宝贵的时间和精力。而与之对应的是,当我们用其他语言实现同样的功能时,由于缺少好用的库而需要我们从无到有全新地去实现对应功能所需的代码。由此即可对比出Python更加好用与强大。
例1.1 Python库种类繁多和功能强大的好处
此处用制造汽车来类比解释Python的好处。
假如你需要制造一台汽车,如果使用Python去实现的话,你会发现,制造汽车所需要的核心部件,比如发动机、底盘、车架等,都已经有了,即可以直接从Python内置的相关功能和第三方库中找到实现对应功能的模块。并且实现同一种功能,比如发动机,还有多个模块可供选择,而你要做的只是稍微了解每个模块各自的优缺点,然后组合和校准之后很快就可以弄出一台汽车了。
与此对应的是,如果用其他语言去实现同样的功能,则很可能遇到的情况是:如发动机等核心部件没有现成的可用的模块,你要自己手动去打造,需要自己去实现对应的代码,或者即使有现成的但功能也不够强大,又或者选择余地不够多而没有找到让你满意的,最终还是需要你额外花很多精力去实现。而除了需要自己搞定发动机等核心功能外,还有很多其他功能也需要自己去实现。
这样,用其他语言从无到有去制造一台汽车的话,可能少则几周多则几个月。而用Python这种好用的语言的话,很可能是几天或者一两周就可以搞定了。
这就是我们所说的Python语言功能强大的自带库以及种类和数量繁多的第三方库,综合而言就是Python很强大很好用!
4.适合原型开发
原型开发指的是当有了一个概念或算法之类的东西,为了验证它的正确性或可行性而去找合适的语言快速实现出来。由于Python是脚本语言,且其本身功能丰富,所以特别适用于原型开发。
5.跨平台和可移植性很好
需要首先强调的是,所谓的可移植性其实也是相对的概念,比如Java也是个可移植性很好的语言。
简单地说,可移植性就是对于同样的代码可以不经过改动直接拿到其他平台使用,并可以实现同样的功能。与此相对的其他很多语言,比如C等,更换平台后则很可能还需要改动部分代码之后程序才可以正常运行,才可以实现同样的功能。有些语言更换平台后甚至都无法直接运行。比如C#的代码只能在Windows平台上运行,换个其他系统,比如 Linux,基本上就没法运行没法使用了。
而Python的可移植性是因为不同平台中安装了Python环境,有对应的Python解释器,对于Python代码来说又无需编译,只要是个普通的文本文件就可以直接运行了。其内部实现过程是,Python解析器会把代码解析成可以在当前平台下运行的代码并运行。
正是由于Python语言具有如此多的优点,所以才有越来越多的人去认识和学习Python,实现Python更广泛的应用。

相关文章
|
4月前
|
传感器 机器人 C++
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
203 0
|
传感器 编解码 Python
【HaaS Python硬件积木】空气质量检测模块 - CCS811
【HaaS Python硬件积木】空气质量检测模块 - CCS811
196 0
|
传感器 开发框架 芯片
【HaaS Python硬件积木】土壤湿度传感器
【HaaS Python硬件积木】土壤湿度传感器
139 0
|
传感器 开发框架 开发者
【HaaS Python硬件积木】4路触摸电容模块-TTP224
【HaaS Python硬件积木】4路触摸电容模块-TTP224
145 0
|
传感器 编解码 开发框架
【HaaS Python硬件积木】HCSR04超声波测距传感器
【HaaS Python硬件积木】HCSR04超声波测距传感器
177 0
|
传感器 安全 开发者
【HaaS Python硬件积木】继电器
【HaaS Python硬件积木】继电器
108 0
|
传感器 芯片 Python
【HaaS Python硬件积木】ULN2003A步进电机驱动
【HaaS Python硬件积木】ULN2003A步进电机驱动
206 0
|
传感器 开发框架 API
【HaaS Python 硬件积木】 BMP280气压传感器
【HaaS Python 硬件积木】 BMP280气压传感器
209 0
|
存储 机器学习/深度学习 算法
【HaaS Python硬件积木】AS608指纹识别模块 打造指纹门禁 开门有手就行
【HaaS Python硬件积木】AS608指纹识别模块 打造指纹门禁 开门有手就行
201 0
|
传感器 数据处理 Python
【HaaS Python 硬件积木】INA219电压电流计
【HaaS Python 硬件积木】INA219电压电流计
263 0