猿来Python开发入门第一讲:Python语言的优缺点

article/2025/8/18 8:15:21

首先, Python是一门解释型编程语言. Python的代码是执行在Python解释器上的.当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

在这里插入图片描述

猿来Python开发入门第一讲:Python语言的优缺点

CPython

当我们从Python官方网站下载并安装好Python后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。我们所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

先看优点

Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

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

高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

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

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

可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

再看缺点:

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

代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。

线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

当然,Python还有一些其它的小缺点,在这就不一一列举了,我想说的是,任何一门语言都不是完美的,都有擅长和不擅长做的事情,建议各位不要拿一个语言的劣势去跟另一个语言的优势来去比较,语言只是一个工具,是实现程序设计师思想的工具,就像我们之前中学学几何时,有的时候需要要圆规,有的时候需要用三角尺一样,拿相应的工具去做它最擅长的事才是正确的选择。之前很多人问我Shell和Python到底哪个好?我回答说Shell是个脚本语言,但Python不只是个脚本语言,能做的事情更多,然后又有钻牛角尖的人说完全没必要学习Python开发语言, Python能做的事情Shell都可以做,只要你足够牛B,然后又举了用Shell可以写俄罗斯方块这样的游戏,对此我能说表达只能是,不要跟SB理论,SB会把你拉到跟他一样的高度,然后用充分的经验把你打倒。


http://chatgpt.dhexx.cn/article/vcoDaPRP.shtml

相关文章

Springboot+Mysql疫情核酸检测统计管理系统

本篇发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的疫情核酸监测统计管理系统,社区可通过该系统快速有效的管理流动人口、常住人口等 系统分普通用户、社区管理员、超级管理员等角色~ 实现的功能有 超级管理员:系统管理&#x…

猿来绘Java-13-继承

为什么要有继承? ① 减少了项目中各个模块代码的冗余,提高了代码的复用性 (提高可维护性) ② 便于功能的扩展(提高可扩展性) ③ 为之后多态性的使用,提供了前提 继承的格式 class ClassAaa exte…

猿猿趴架构实战--03 什么是架构

3 什么是架构? 3.1 官方定义 “组成”论:程序或计算系统的软件架构是系统的一个或多个结构,它包括软件元素、这些元素的外部可见属性以及它们之间的关系。 “决策”论:软件架构是一系列重要决策的集合,这些决策与以下…

猿来代理模式如此esay~

文章目录 代理为什么要使用代理静态代理动态代理有了静态代理为什么还要有动态代理JDK动态代理 代理 为什么要使用代理 简化代码开发,应用场景例如:Spring中的AOP就使用了动态代理的思想,进一步降低了代码的耦合性 设想这样一个业务需求&am…

名师为何离开猿辅导?

来源|盒饭财经 编辑|谭丽平 有名师正跳下猿辅导这辆高速奔跑的列车。 “猿辅导数学老师邓诚去哪了?”“如何看待邓诚老师离开猿辅导”近期,在知乎上,出现了类似网友提问。 邓诚是一位明星讲师,因“跟着坑神…

猿猿

大家好,刚刚开通博客,欢迎各位多踩踩,以后还有很多学习上的问题还得多多劳烦各位大神指点。

老猿说说-Thread

引导语 从本章开始我们开始学习线程的知识,线程是非常有趣的一个章节,大多数同学对于线程 API,属于不用就忘,到用时需要百度的情况,希望通过本小节的源码阅读,能够加深对线程的印象。 本小节主要三章&…

先进计算成趋势,猿代码助力科学之梦|猿代码科技

计算,是社会发展各个环节都存在的名词,无论是科学研究,或者是生产制造,甚至于每天的睁眼闭眼,只要有思考就会有计算。在全球经济一体化的当下,经济社会对于“计算”的依赖日益凸显,“计算”早已…

猿辅导获国际科研大奖:深度解析它为何在科研界“混得”风生水起

近年来,随着新一代人工智能在全球范围内的蓬勃兴起,人们的生产和生活方式也发生了巨大的变化。人工智能作为引领新一轮科技革命和产业变革的战略性技术之一,正在各领域落地应用。为了进一步推动人工智能与教育深度融合,发挥人工智…

猿来如此java系统_2020年最新 猿来如此springboot基础脚手架(资料完整)

『视频截图』: 98.jpg (78.82 KB, 下载次数: 0) 2020-5-29 10:44 上传 97.jpg (20.2 KB, 下载次数: 0) 2020-5-29 10:43 上传 『课程目录』: 目录:/6、2020年最新 springboot基础脚手架(笔记、源码、素材 完整) ┣━━课堂笔记 ┃ ┗━━springboot基础脚手架课堂…

猿来绘Java-31-为什么子类重写的方法抛出的异常类型小于等于父类被重写的方法抛出的异常

来一个例子 //OverrideTest.java package com.ylaihui.exception;import java.io.FileNotFoundException; import java.io.IOException;public class OverrideTest {public static void main(String[] args) {OverrideTest test new OverrideTest();test.display(new SubClas…

写在 2023 年初的后端社招面试经历(四年经验):字节 米哈游 富途 猿辅导

目录 背景面试准备面试 字节跳动米哈游富途牛牛猿辅导 总结 一些推荐 1. 背景 距离上一次面试[1]已经过去快 3 年了,又碰上 2022 年互联网行业大动荡,很多企业都做出了裁员决定。 身为互联网人要时刻关注自身成长,所以会对 “跟面试官切磋” …

猿人学第一题

** 猿人学系列保姆级教程 ** 第一题* 链接:http://match.yuanrenxue.com/match/1 1 分析所需参数请求来源及获取请求索要参数 上图我们可以分析出我们所需数据请求的url为http://match.yuanrenxue.com/api/match/1?me1c053a7e2130d440b11196035803350%E4%B8%A81608486311…

猿来你也在这里,北京上海无聊猿线下见面会成功举办

由Angry Rabbit暴躁兔社区、男士理容生活潮牌公司dearBOYfriend、REVO联合众多无聊猿NFT玩家举办的无聊猿聚会活动于8月7日下午在北京与上海两地同期正式举行。 本次下线活动在北京的举办地为海淀区荷清路东升园公寓Meta Space咖啡厅,参与者16人,上海举办…

猿创征文|那一年

猿创征文|那一年 那一年,因为游戏我与开发结缘那一年,我选了软件技术专业那一年,我实习了那一年,我去了一家培训外包公司那一年,我大学毕业那一年,我去了济南工作那一年,再就业那一年…

猿创征文 | Python 开发工具进化之旅

​ 前言 我为什么会接触Python? 小元是开发驱动底层的,比驱动还底层,没错就是底层设备内部程序。驱动层以下都是 C 的天下, 我为什么会接触到 Python? 2010 年的时候, 那时候 python 还没火, 那时候我就…

猿人学第1题(一天搞一个)

文章目录 前言 1. 加密方法1.1 加密寻找准备1.1.2 抓包分析1.1.3 调用堆栈前期试验理解中期操作 1.2 加密内容 2. 代码实现2.1 完整版代码2.2 python函数总结2.3 注意 前言 对js的基础一窍不通,最近才开始看。所以本文只是复现,别人的操作的逻辑。 如果…

猿人学 第一题

地址:http://match.yuanrenxue.com/match/1 思路: 1.找到传输加密地址,发现加密字段m,,通过全局搜索没有找到m值 2.通过该地址访问过的js文件排查到request,再通过断电发现m加密地方 3.找到对应的加密方…

JAVA保姆级教学(一)[安装及使用]

一.首先我们常用编写java的是idea和eclipse,在这里呢我们主要讲解的是eclipse,它的安装及配置比较复杂,小伙伴们耐心看完这篇文章,少迷路~ 二.首先,我们去官网自行下载eclipse和jdk,有的人刚接触java可能不会下载,那么…

常用服务和开放端口对照表

常用服务和开放端口对照表 代理服务器常用以下端口: (1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 (2). SOCKS代理协议服务器常用端口号:1080 (3). FTP&am…