Python基础:四、python的优缺点

Stella981
• 阅读 564

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
1星期前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
6个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这