Python基础:四、python的优缺点

Stella981
• 阅读 295

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

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

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
6天前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
blmius blmius
1年前
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:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
Karen110 Karen110
1年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。 time包import time 时间戳 从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
11个月前
KVM调整cpu和内存
一.修改kvm虚拟机的配置 1、virsh edit centos7 找到“memory”和“vcpu”标签,将 <name>centos7</name> <uuid>2220a6d1-a36a-4fbb-8523-e078b3dfe795</uuid>
Stella981 Stella981
11个月前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有`time`,和`datetime`两个,本文先说`time`模块。 ### 关于时间戳的几个概念 * 时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。 * 时间元组(`struct_time`),包含9个元素。  `time.struct_time(tm_y
Stella981 Stella981
11个月前
Python 环境搭建
#python bug集 #目录 \[toc\] ##00 python 模块下载地址 [pyhton模块下载地址](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.lfd.uci.edu%2F%7Egohlke%2Fpythonlibs%2F) ##01 python pip
Wesley13 Wesley13
11个月前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序 select * from table_name order id desc; 2.按照指定(多个)字段排序 select * from table_name order id desc,status desc; 3.按照指定字段和规则排序 selec
Stella981 Stella981
11个月前
Angular material mat
Icon Icon Name mat-icon code _add\_comment_ add comment icon <mat-icon> add\_comment</mat-icon> _attach\_file_ attach file icon <mat-icon> attach\_file</mat-icon> _attach\
Wesley13 Wesley13
11个月前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_34035044 helloworld_34035044
2个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为