Python与C++的对比——跟老吕学Python编程

Python与C++的对比——跟老吕学Python编程

  • Python与C++的对比
    • 1.C++编译型 vs Python解释型
    • 2.执行效率
    • 3.开发效率
    • 4.跨平台
    • 5.可移植性
    • 6.内存管理机制
    • 7.易学性
    • 8.静态类型 vs 动态类型
    • 9.面向对象编程概念
    • 10.垃圾回收
    • 11.应用领域
    • Python与C++的对比表

Python与C++的对比——跟老吕学Python编程

Python与C++的对比


Python和C++都是最受欢迎的编程语言之一,但是它们的优点和缺点各有不同



1.C++编译型 vs Python解释型


C++为编译性编程语言,Python 则为解释性编程语言。

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就无需再进行编译,直接允许可执行文件即可。

解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合在-起同时完成。每次执行解释型语言的程序都需要进行一次编译, 因此解释型语言的程序运行效率通常较低,而且它不能脱离解释器独立运行。

但解释性语言有一个优势:跨平台比较容易,只需提供特定平台的解释器即可。每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。解释性语言可以方便的实现源程序的移植,但这是以牺牲程序执行效率为代价的。



2.执行效率


C++执行效率高 ,Python执行效率低,C++的运行效率要比Python快。事实上,C++ 广为人知并广泛用于需要运行更快的应用程序,如游戏平台。此外,Python 程序运行速度比 Java 程序慢。因此,我们专门将 Python 用于可能会降低速度的应用程序。



3.开发效率


C++开发效率低 ,编程难度大;
Python开发效率高,编程难度小;
C++的开发效率要比Python低。
C++程序被编译为机器代码。因此,它的执行速度比基于解释器的语言更快。



4.跨平台


C++ 需要在每个不同的平台上重新编译代码,C++主要是“一次编写,随处编译”。

Python解释器不会生成编译代码,每次在任何操作系统上运行源代码时,源代码都会转换为字节码,无需任何更改或额外步骤。



5.可移植性


Python代码很容易从一个操作系统移植到另一个操作系统。C++代码不可移植,如果操作系统改变,必须重新编译。



6.内存管理机制


Python 提供了被称为【垃圾收集器】的自动内存管理机制,不允许直接进行内存处理操作。
C++里则没有这样的机制,并且所有内存管理操作都需要自行处理。



7.易学性


与C++相比,Python具有更简单的语法。它的代码更易读。写C++代码在开始时似乎令人生畏,因为语法规则复杂,例如使用大括号和分号表示语句的终止。

Python不使用大括号来标识一组语句。而是使用缩进。相似缩进级别的语句标记一个块。这使得Python程序更易读。



8.静态类型 vs 动态类型


C++是一种静态类型语言。存储数据的变量的类型需要在开始时声明。不能使用未声明的变量。一旦将变量声明为某种类型,只能存储该类型的值。

Python是一种动态类型语言。在给变量赋值之前,不需要声明变量。由于变量可以存储任何类型的数据,所以称之为动态类型。



9.面向对象编程概念


C++和Python都实现了面向对象编程概念。C++比Python更接近面向对象编程的理论。C++支持数据封装的概念,因为变量的可见性可以定义为public、private和protected。

Python不具备定义可见性的机制。与C++不同,Python不支持方法重载。因为它是动态类型的,所有方法默认都是多态的。

C++实际上是C的扩展。可以说,在C中添加了其他关键字以支持面向对象编程。因此,我们可以在C++中编写C类型的过程导向程序。

Python完全是面向对象的语言。Python的数据模型是这样的,即使你可以采用过程导向的方法,Python内部仍然使用面向对象的方法。



10.垃圾回收


C++使用指针的概念。C++程序中未使用的内存不会自动清除。在C++中,垃圾回收的过程是手动的。因此,C++程序很可能出现与内存相关的异常行为。

Python具有自动垃圾回收机制。因此,Python程序更健壮,不容易出现与内存相关的问题。



11.应用领域


由于C++程序直接编译成机器代码,更适合系统编程、编写设备驱动程序、嵌入式系统和操作系统工具。

Python程序适用于应用程序编程。它今天的主要应用领域是数据科学、机器学习、API开发等。



Python与C++的对比表

对比项C++Python
执行方式基于编译器基于解释器
类型系统静态类型动态类型
可移植性不可移植高度可移植
垃圾回收手动自动
语法繁琐简洁
性能执行更快执行较慢
应用领域嵌入式系统,设备驱动程序机器学习,网络应用



如果您觉得本文有帮助,辛苦您点个赞、收个藏、或评论一句,您的举手之劳将对我提供了无限的写作动力!
博主ID:Python老吕,希望大家点赞、评论、收藏。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构小记【Python/C++版】——散列表篇

一,基础概念 散列表,英文名是hash table,又叫哈希表。 散列表通常使用顺序表来存储集合元素,集合元素以一种很分散的分布方式存储在顺序表中。 散列表是一个键值对(key-item)的组合,由键(key)和元素值(item)组成。键…

解密阿里巴巴面试题:如何设计一个微博?

亲爱的小米科技粉丝们,大家好呀!今天小米带来了一则热门话题——阿里巴巴面试题:如何设计一个微博?别着急,跟着小米一起来揭秘吧! 实现哪些功能? 在设计微博系统时,需要考虑实现哪些功能才能满足用户的需求。除了基本的发布推文、时间线、新闻推送、关注/不允许用户以…

编程训练基础代码六

1、定义一个方法,该方法能够找出两个小数中的较小值并返回。 public class SmallerValue {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println("请输入两个整数: ");int asc.nextInt();int bsc.nextInt();…

算法 -【找出字符串的可整除数组】

找出字符串的可整除数组 题目示例1示例2 分析代码 题目 给你一个下标从 0 开始的字符串 word ,长度为 n ,由从 0 到 9 的数字组成。另给你一个正整数 m 。word 的可整除数组 div 是一个长度为 n 的整数数组,并满足: 如果 word[0…

【JavaScript 漫游】【034】AJAX

文章简介 本篇文章为【JavaScript 漫游】专栏的第 034 篇文章,对浏览器模型的 XMLHttpRequest 对象(AJAX)的知识点进行了总结。 XMLHttpRequest 对象概述 浏览器与服务器之间,采用 HTTP 协议通信。用户在浏览器地址栏键入一个网…

Java项目源码基于springboot的家政服务平台的设计与实现

大家好我是程序员阿存,在java圈的辛苦码农。辛辛苦苦板砖,今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现,项目源码以及部署相关请联系存哥,文末附上联系信息 。 项目源码:Java基于spr…

虚拟机镜像iso下载

MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)

CANalyzer使用_00 概述

计划写一个专题,该专题主要介绍CANalyzer的使用,每次文档计划写一个点,自己不累,别人看着也不累,并且方便拓展。本文作为专题的开篇主要介绍下CANalyzer软件的背景,软件界面等信息。 1 软件介绍 CANalyze…

FastAPI 学习笔记

FastAPI 学习笔记 0. 引言1. 快速开始2. 升级示例代码 0. 引言 在 Python 这个充满活力的生态系统中,FastAPI 应运而生,它是一个现代的、快速的 Web 框架,专注于构建 RESTful API。 无论你是一名有经验的 Python 开发人员,还是一…

MyBatis注解开发详解

MyBatis注解开发详解 一、前言 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原始类型、接口和Java POJO(Plain…

HTTP/2、HTTP/3对HTTP/1.1的性能改进和优化

HTTP/1.1 相比 HTTP/1.0 提高了什么性能? 性能上的改进: 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以…

Purple Pi OH鸿蒙开发板7天入门OpenHarmony开源鸿蒙教程【五】

在完成了Purple Pi OH大部分的接口测试之后,紧接着就是一个充满挑战的任务——利用SDK来编译生成我们自己的镜像文件。通过这一过程,不仅能够让你获得一个可在真实硬件上运行的系统镜像,更重要的是,它让你对OpenHarmony系统的构建…

C++中的内存管理方式

一、C内存管理方式简介 C语言中的内存管理方式在C中可以继续使用,但是在有些地方就无能为力,而且使用起来比较麻烦。因此C中引入了自己的内存管理方式,通过new和delete操作符进行动态内存管理。 二、new语法 new可以申请1个或多个空间&…

Android自定义binder实现进程间通信

通过binder建立进程间通信,主要分为两步: 1. 定义一个binder的服务(在androidManifest.xml中声明)接受远端请求。 服务中创建一个binder实例, 在接收到客户端的连接时,向请求方返回回binder的引用。重写Bi…

Qt - 信号和槽

目录 一、信号 二、槽 三、信号和槽的使用 (一) 连接信号和槽 (二) 自定义槽 (三) 通过 Qt Creator生成信号槽代码 (四) 自定义信号 四、带参数的信号和槽 五、信号与槽的断开 六、Qt4版本信号与槽的连接 (一) Qt4版本信号与槽连接的优缺点 一、信号 在 Qt 中&…

【简单模拟】第十二届蓝桥杯省赛第二场C++ B组《特殊年份》(C++)

【题目描述】 今年是 2021 年,2021 这个数字非常特殊,它的千位和十位相等,个位比百位大 1,我们称满足这样条件的年份为特殊年份。 输入 5 个年份,请计算这里面有多少个特殊年份。 【输入格式】 输入 5 行&#xff…

​Ubuntu20.04 创建新的用户​

1、了解Linux目录结构 推荐看一下:https://www.runoob.com/linux/linux-system-contents.html Linux支持多个用户进行操作的,这样提高了系统的安全性,也可以多人共用一个系统,不过要注意的是系统中安装的软件相关路径&#xff0…

CubeMX使用教程(5)——定时器PWM输出

本篇我们将利用CubeMX产生频率固定、占空比可调的两路PWM信号输出 例如PA6引脚输出100Hz的PWM;PA7引脚输出500Hz的PWM,双路同时输出 我们还是利用上一章定时器中断的工程进行学习,这样比较方便 首先打开CubeMX对PA6、PA7进行GPIO配置 注&a…

Mixamo动画素材导入UE5的最简单方法

一、Mixamo素材 官网:https://www.mixamo.com/ Mixamo是Adobe公司出品的免费动画库,可商用。软件分为characters(角色)、Animations(动画)两个部分。 二、辅助工具MIXAMO CONVERTER 官网:https://terribilisstudio…

Android中MultiDex优化

MultiDex基本思路 当一个Dex文件太肥的时候(方法数目太多、文件太大),在打包或在安装或运行apk也会出问题。 解决方法就是将这个硕大的Dex文件拆分成若干个小的Dex文件。 刚好一个ClassLoader可以有多个DexFile。 MultiDex主要性能瓶颈 解压缩和Dex优化(…