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)组成。键…

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

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

【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 开发人员,还是一…

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系统的构建…

Qt - 信号和槽

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

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…

C#与WPF通用类库

个人集成封装,仓库已公开 NetHelper 集成了一些常用的方法; 如通用的缓存静态操作类、常用的Wpf的ValueConverters、内置的委托类型、通用的反射加载dll操作类、Wpf的ViewModel、Command、Navigation、Messenger、部分常用UserControls(可绑定的Passwo…

通信总线协议之CAN-FD协议详解

文章目录 通信总线之CAN-FD总线协议详解1. CAN-FD 简介1.1 什么是CAN FD1.2 CAN FD的特点 2. CAN-FD总线协议2.1 帧起始2.2 仲裁段2.3 控制段2.4 数据段2.5 CRC段2.6 ACK段2.7 帧结束 3. 如何从传统的CAN升级到CAN FD 通信总线之CAN-FD总线协议详解 1. CAN-FD 简介 1.1 什么是…

selenium高级应用

常见控件应用 复杂的控件操作1.操作Ajax选项2.滑动滑块操作 WebDriver的特殊操作元素class值包含空格property、attribute、text的区别定位动态id 截图功能页面截图页面截图,返回截图的二进制数据页面截图,返回base64的字符串截取指定元素。先定位元素&a…

Redis常见数据类型下

目录 Hash 哈希 常用指令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET 内部编码 Hash类型和关系型数据库 缓存方式对比 List 列表 特点 常用命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP / RPOP LINDEX LINSERT 阻塞(BLOCK)版…

【Linux】文件缓冲区|理解文件系统

目录 预备知识 观察现象 第一:携带\n,不使用fork(),打印到显示器 第二:携带\n,使用fork(),打印到显示器 第三:携带\n,使用fork(),打印到文件里 第四:不携…

如何选择适合的G口大流量服务器?

G口大流量服务器是指接入互联网的带宽达到1Gbps及以上,并且能够提供大量数据传输服务的服务器。那么如何选择适合的G口大流量服务器,RAK部落小编为您整理发布选择适合的G口大流量服务器需要考虑哪些关键点。 选择适合的G口大流量服务器时,应该…

JavaSec 基础之 CC1 链

文章目录 背景环境以及配置分析0x1 终点(利用点分析)0x20x30x310x320x33 0x040x05 背景 Apache Commons Collections是Apache提供的一个Java库,它扩展了Java自带的集合框架。通过这个库,咱们可以使用更多种类的集合类型,以及各种实用的集合操…

星星魔方

星星魔方 1,魔方三要素 (1)组成部件 6个中心块和8个角块和三阶魔方同构,另外每个面还有构成五角星的十个块。 (2)可执行操作 一共12种操作,其中6种是每个层顺时针旋转90度,另外6…