《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相对其他语言一个最大的特点是:代码缩进决定了代码的逻辑关系,而不仅仅是为了代码的美观性。
下面介绍更多的其他特点:
- 很多语言内置特性使得Python语言本身很方便编程者使用Python中的字符串可以直接通过数组下标去获得对应子字符串。这类特性是其他很多语言本身所不具有的。Python的此类特点在第4章中会有更加详细的解释。
- .一种被广泛采用的胶水语言
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更广泛的应用。
《Python硬件编程实战》——1.3 Python的特点相关推荐
- 《Python硬件编程实战》——2.8 在Mac中安装Python
本节书摘来自华章计算机<Python硬件编程实战>一书中的第2章,第2.8节,作者:李茂 著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.8 在Mac ...
- python硬件编程_Python学习日记_《Python硬件编程实战》笔记_Mr_Ouyang
书名: Python硬件编程实战 作者: 李茂 出版社: 机械工业出版社 [此处需要插入图片 Python封面] 笔者简评:不太适宜购买,全书大篇幅在用图片来解释极简单的细节,对于那些需要作者去深挖. ...
- 函数式编程实战教程(Python版)
许多函数式文章讲述的是组合.流水线和高阶函数这样的抽象函数式技术.本文不同,它展示了人们每天编写的命令式.非函数式代码示例,以及将这些示例转换为函数式风格. 文章的第一部分将一些短小的数据转换循环重写 ...
- 【2021最新版】Python 并发编程实战,用多线程、多进程、多协程加速程序运行
[2021最新版]Python 并发编程实战,用多线程.多进程.多协程加速程序运行 视频地址:https://www.bilibili.com/video/BV1bK411A7tV/ P1 Pytho ...
- 视频教程-Python数据分析案例实战 视频课程-Python
Python数据分析案例实战 视频课程 计算机硕士,多年工作经验,技术和产品负责人. 多年推荐系统/NLP/大数据工作经验. 负责公司多个AI项目产品落地,包括文本分类.关键词抽取.命名实体识别.对话 ...
- Python异步编程实战入门:从概念到实战
概述 读者可前往我的博客获得更好的阅读体验 在Python中存在GIL机制,该机制保证了在Python中同时间内仅能运行一行代码,这导致了Python无法真正实现多线程,但可以通过多进程打破GIL限制 ...
- python网络编程实战_Python 异步网络编程实战
近年来 Python 的发展的非常迅速,"简单"."高效"是 Python 吸引人的一大特色.在国内 Python 开发需求越来越大,Python 具有丰富强大 ...
- python控制灯泡_人工智能应用-手把手教你用Python硬件编程实现打开或关闭电灯泡...
之前我们已经给广大爱好者或程序员朋友们,带来了硬件版的或者说物联网版本的Hello World C++Builder版.Delphi.Visual Basic.Net等的程序源码和教学资料,让大家对硬 ...
- python项目开发实战-给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- python怎样编程_怎么自学python编程
如何自学Python编程?一堆的Python教程却感觉无从下手呢?我想这应该是很多Python初学者正在纠结的问题. 今天想要分享给大家的是如何自学Python编程,学习这件事 还真不是人人都擅长的, ...
最新文章
- [转]配置子报表和钻取报表
- socket通信(5)4次挥手
- 【温故知新】CSS学习笔记(盒子水平居中方法)
- Shell编程之if语法练习(LNMP)全过程
- C++之智能指针和普通指针单例模式两种实现
- 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?
- 象过河软件试用版_比肩许银川蒋川王天一,象棋软件下出神一样的残局,看完叹为观止...
- Tomcat 应用服务器如何设置 Web 服务目录精讲
- Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...
- 笨办法学 Python · 续 练习 3:质量
- 《面向模式的软件体系结构1--模式系统》读书笔记(7)--- 通信
- 贝叶斯公式:通俗的理解
- 宁夏政务网 紫图高拍仪控件和文件上传控件的若干问题及解决方法
- 生鲜电商带火冷链物流,中、圆、申三通如何拼了命地排兵布阵
- xpwifi热点设置android,WinXP笔记本设置WiFi热点的方法
- 北京信息科技大学计算机专业强不强,北京信息科技大学怎么样 2021年全国排名多少...
- 除了摆地摊or送外卖,程序猿如何体面的赚零花钱?
- 颜值,自拍,美学三大任务简介和数据集下载
- PhotoShop 快速选择工具及选择并遮住使用
- 新概念2 课文和单词(4)
热门文章
- I.MX6 linux kernel编译错误处理
- 夜,思考——我想要的到底是什么?
- 广州有这么一个无聊的人
- Oracle10g BIGFILE表空间带来的好处
- 加一条平行于y轴的直线_Hepco海普克应用案例—直线V型滚轮导轨广泛应用于多轴机械手...
- DPDK数据流过滤规则例程解析—— 网卡流处理功能窥探
- 边境线 详解(C++)
- jq select 修改选中_转 jquery操作select(取值,设置选中)
- oracle 高速保存数据,教你怎样在Oracle数据库中高速导出/导入(一)
- sql top加不加括号的区别_SQL易错点大作战