Python基础:四、python的优缺点

python是一门动态解释性的强类型语言

python的优点:

1. python的定位是"优雅"、"明确"、"简单"

        python程序看上去总是简单易懂,初学者学python,不但入门容易,二缺将来深入下去,可以边啊些那些非常复杂的程序。

2. 开发效率高

        python有强大的第三方库,基本上你想通过计算机实现任何功能,python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

3. 高级语言

        当你用python语言编写程序的时候,你无需开了诸如如何管理程序使用的内存一类细节。

4. 可移植性

        由于python的开源本质,python以及高被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有的python程序无需修改就可以在市场上所有的系统平台上运行。

5. 可扩展性

        如果你需要你的一段关键代码运行的得更快,或者希望某些算法不公开,你可以把你的部分程序用c或c++编写,然后在你的python程序中使用它们。

6. 可嵌入性

        你可以把python嵌入你的c\c++程序,从而向你的程序用户提供脚本功能。

python的缺点:

1. 速度慢

        python的运行速度相比于c语言确实慢了很多,跟Java比也要慢写,因此这也是很多人不屑于使用python的原因,但其实这里所指的运行速度在大多数情况下用户是无法直接感受到的,必须借助测试工具才能体现出来,比如你用c运行一个程序花了0.01秒,用python是0.1秒,这样c语言比python快了10倍,算是很夸张了,但是你是无法用肉眼直接感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右。其实在大多数情况下,python已经完全满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎(这种情况下还是应该用c去实现)。

2. 代码不能加密

        因为python是解释型语言,它的源代码都是以明文的形式存放的。如果你的项目要求源代码必须是加密的,一开始就不应该用python实现

3.线程不能利用多CPU问题

        这是python被人诟病最多的一个缺点,GIL即全局解释器(GlobalInterpreterLock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行。python的线程是操作系统的原生线程,在Linux上为pthread,在Windows上为Winthread,完全由操作系统调度线程执行。一个python解释器进程内有一条主线程,以及多条用户程序执行的线程,即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行(有折中方法)。

        当然,python还有一些其他的小缺点,这这就不一一列举了。任何一门语言都不是完美的,都有擅长和不擅长做的事情,建议不要用一个语言的劣势和另一个语言的优势去比较

语言只是一种工具,是实现程序设计师思想的工具,就像我们之前中学学集合时,优点时候需要圆规,有的时候需要用三角尺一样,拿相应的工具去做它最擅长的工作才是最正确的选择。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )