Python基础语法(与C++对比)(持续更新ing)
代码块
Python | 在统一缩进体系内,为同一代码块 |
C++ | {...}内部的为同一代码块 |
注释
Python | 单行注释:#... 多行注释:'''...''' |
C++ | 单行注释://... 多行注释: /*...*/ |
数据类型
1. Python数据类型
Python中支持数字之间使用下划线 ' _ ' 分割数字,旨在查看方便
Python中为动态类型,不用显示给变量声明类型。若想声明类型:a:int = 10
int | (1)数据范围:无穷大 (2)默认为4字节大小 (3)支持动态扩容(内存足够大,就可以保存足够大的数据) (4)十六进制:0x开头 (5)八进制:0o开头 |
float | (1)双精度浮点数 (2)默认为8字节大小 (3)科学计数法表示:1.23 * 10 ** 9 == 1.23e9 ; 1.23 * 10 ** (-3) == 1.23e-3 |
字符串 | (1)可以用单引号 ' .. ' 双引号 " ... " 三引号 ''' ... ''' (2)单引号、双引号、三引号可以相互嵌套使用,完成各种语境 (3)r "..." 表示 内部字符串默认不转义,就是普通字符 (4)'''line1 ...line2 ...linen ''' 表示多行内容,与\n效果一致 |
bool | (1)True False (2)用于条件选择 while、if 中 (3)0为假、非0为真 |
空值 None | (1)不为0,为一个特殊值 |
2. C++数据类型
整型类型: char short int long long long ... | (1)根据存放数据的大小由程序员自由选择 (2)不支持扩容,所以才会有这么多类型 (3)十六进制:0x开头 (4)八进制:0开头 |
浮点数类型: float double | (1)float:单精度浮点数,默认字节为4,只保留6位小数 (2)double:双精度浮点数:默认字节为8 (3)使用printf函数时如果没有指定精度,float与double都 是默认输出6位有效数字,此时使用.nf / .nlf来指定输 出的小数位数 (4)使用cout输出的时候,只保留五位小数(四舍五入) |
字符串 | (1)只能用双引号 " ... " (2)以 ' \0 ' 结尾,字符串结束的标志,不算字符串的内容 (3)strlen计算字符串长度,不算末尾的' \0 ' |
bool类型 | (1)true、false (2)默认字节为 1字节 (3)true为1,false为0 (4)0为假,非0为真 |
变量
Python 动态类型语言 | (1)无需显示声明变量的数据类型,会根据赋值来自动推导数据类型,并且变量的类型可以动态改变 (2)Python中的变量必须初始化,因为变量为对象的引用,是别名,必须初始化 |
C++ 静态类型语言 | (1)变量在使用之前必须声明类型,一旦确定类型,在其整个生命周期中,不允许被改变,也不允许其他数据类型进行赋值,但C++提供了强制类型转换的方法 (2)变量可以不初始化,被称为声明,旨在告诉编译器预留出一段空间来存放该数据类型的数据,以便后续进行赋值。 |
变量作用域
Python 动态类型语言 | Python分为多级作用域,且只有函数和class类的代码块会涉及到作用域,if、else、elif、while、for的代码块定义的变量可以在外面使用,即属于全局变量 (1)Python的全局变量与局部变量同名时,优先匹配同级作用域的变量,若无,则找上级作用域的变量 (2)下级作用域若创建一个与上级作用域同名的变量,默认是创建一个新的数据对象,对下级作用域中的变量进行修改,不会影响上级作用域的同名变量。若想在下级作用域中修改上级变量,使用global关键字先标识上级变量,再对其进行修改 |
C++ 静态类型语言 | 变量的作用域由大括号来决定,生命周期由自身的属性决定,但是其可以通过引用传参或指针传参来直接或间接访问变量 全局变量:作用域全局,生命周期随进程 栈变量:作用域和生命周期为所处大括号范围内 堆变量:作用域所处大括号范围内,生命周期随进程 静态局部变量:作用域所处大括号范围内 静态全局变量:作用域全局,生命周期随进程 |
变量赋值
Python 动态类型语言 | 在 Python 中,变量通过引用指向对象,当多个变量被赋值为相同的值时,它们实际上指向的是同一个对象。这种机制有助于提高内存使用效率和编程的便捷性,需要注意的是Python中赋与相同的值的对象必须是不可变对象,多个变量才会指向同一个对象,如果是list这种可变对象,则会开辟多个空间,因为Python不能确保我们后续是否会修改,若只开辟一个空间创建一个对象,则后续修改一个,其他变量也会被修改 |
C++ 静态类型语言 | C++是一种静态类型语言,在编译时就需要确定变量的类型和大小,这是因为在编译的时候,就已经将变量名换成地址了,为的是在运行时,初始化进程地址空间。在 C++中,每个变量都有自己独立的内存空间,因此可以在不同的作用域中使用相同的变量名,而不会相互干扰。这是因为在编译的时候,就已经把变量名转换为地址来表示了,变量名只是给我们自己看的,即使变量名相同,但是底层的地址不同,就属于不同的变量 |
内存管理机制
Python 动态类型语言 | 具有自动的内存管理机制,通过垃圾回收器来自动回收不再使用的对象所占用的内存 |
C++ 静态类型语言 | 程序员需要手动管理内存,包括用 |
常量
Python | Python没有真正意义的常量,通常用全大写的字母来表示常量,但是这些常量本质依旧是可以改变的变量,只不过是对程序员的一种非限制性约束,只要程序员看到全大写的变量,会默认这是一个不可修改的变量,即常量。 |
C++ | (1)const修饰的常变量:给变量添加常属性 (2)enum枚举常量 (3)define定义的宏 (4)字面常量:1,3.14 |
运算符
算数运算符 | + - * / % ** // a ** b :数学中的乘方运算,b可正、负,可整数、小数 a // b :向下取整的除法(往小方向取整) (1)Python中除0或0.0都为除0异常 C++中只有除0会抛异常,除0.0会得到无穷大的数inf (2)Python中int / int ,除不尽得到小数,不会截断 C++中 int / int ,除不尽得到整数,会截断 |
关系运算符 | < <= > >= == != (1)比较整数、比较字符串(按照字典序比较) (2)比较浮点数:使用关系运算符比较浮点数的时候,存在一定的风险,因为浮点数载内存的存储和表示,是可能存在误差的,这样的误差会在进行算数运算的时候被放大,从而导致关系运算符的判断不准。 正确比较浮点数:作差,判断是否在误差范围 -0.000001 < a - b < 0.000001 在误差范围就是True,反之False (3)Python支持连续小于的写法,即Python支持连续的条件判断,而C/C++不支持 |
逻辑运算符 | (1)and:C++中的 && 并且 (2)or: C++中的 || 或者 (3)not: C++中的 ! 逻辑反 |
赋值运算符 | (1)赋值 a = 10 a = b = 10 a , b = 10 , 20 (2)交换 a, b = b, a |
身份运算符 | is 、is not :用于判断两个对象是否为同一个对象 即它们是否具有相同的内存地址 【Python中若给两个变量赋同一个值,本质上这两个变量指向的是同一个内存地址,底层不会给两个变量开辟两个相同的值的空间,这属于一种浪费,所以在使用is来判断的时候,他们属于同一个对象;但是在C++中,是会给同一个值的两个变量开辟不同的空间存放,这是不同之处】 |
成员运算符 | in、not in:用于判断一个对象是否在可迭代对象中 |
位运算符 | &、|、~、^、<<、>> |
混合运算符 | +=、-=、*=、/=、%=、**=、//= Pyhton不支持++、-- |
格式化打印
Python | 第一种: (1)采用与C语言一致的风格 (2)格式:print(" ...%d %s ... " %(123, ' hello ')) (3)%s可以把所有的数据类型转换为字符串类型 第二种: (1)format函数,通过{0}、{1}、{2}这种占位符来进行格式化打印 (2)占位符: 格式 -> 表示需要以哪种形式打印出来数据 { 0 : nd } { 0 : .nf } { 0 : ns } (3)与print配套使用 (4)print (" 我的名字是{ 0 },我{ 1 }岁 ".format ( ' hh ',' 20 ' ) ) 第三种: (1)f-string :使用以 (2)与print配套使用 |
C++ | C语言printf格式化打印(%d、%md、%f、%c、%s、%o、%x、%p、%e、%E、%n等)_printf %d-CSDN博客 |
Python的列表 list 与 C++的 vector
Python的列表list(与C++的vector对比学习)-CSDN博客
Python的元组 tuple
【深入理解】元组tuple的底层实现(与C++进行对比)-CSDN博客
Python的dict
Python的dict与C++的unordered_map类似,用来存放键值对的数据结构,是高效的搜索结构
Python | (1)表示形式:以{ ... }包围,内部为key:value形式 (2)创建:d = {key:vlaue, key:value} (3)key不可以重复、且key为不可变对象,所以可以用做key的类型有:字符串、整数、浮点数、bool、元组 (4)查找:使用in / not in 来判断在或不在,这里是判断key d [key] 存在获得value,反之抛异常 d.get( )存在获取value,不存在获取None (5)插入:d [key] = value(key不存在) (6)修改:d [key] = value(key存在) (7)删除:d.pop(key) (8)遍历:for循环 d.keys( ) 获取所有key d.values( ) 获取所有values d.iitems( ) 获取所有的key:values |
Python的set
set是一组key的集合,但是不存储value,重复元素会被自动过滤,这与C++的unordered_set类似
Python | (1)创建: s = { key, key, key, ... } (2)key必须是不可变对象 (2)插入:s.add( key ) (3)删除:s.remove( key ) (4)多个set可以做数学意义上的交集和并集等操作 |
Python的可变对象与不可变对象
不可变对象:对象调用自身方法,不会改变自身的内容,会创建新的方法并返回
可变对象:对象调用自身方法会改变自身的内容
条件判断
Python | if <条件判断>: <代码块> elif<条件判断>: <代码块> else: <代码块> |
C++ | if (条件判断) { //代码块 } else if(条件判断) { //代码块 } else { //代码块 } |
模式匹配
有关变量的条件:match / switch 到的变量在每个case中是否匹配,匹配就执行
Python | match 变量: case 有关变量的条件: <代码块> case 有关变量的条件: <代码块> case _: # 匹配到其他情况 <代码块> |
C++ | switch (变量) { case 有关变量的条件: { // 代码块 } ... default: { // 代码块 } } |
循环
break:退出循环;
continue:提前结束本轮循环,直接进入下一轮循环
两者通常搭配if语句使用
可迭代对象:list/tuple/dict/set等数据结构,range内建函数
Python | (1)while循环 while 条件: 循环体 (2)for循环 for 循环变量 in 可迭代对象: 循环体 |
C++ | (1)while while(循环条件) { // 循环体 } (2)do-while do { //循环体 } while(循环条件) (3)for for(循环变量初始值;循环条件;循环变量下一次进入循环的值) { // 循环体 } |
空语句
Python要保证语法格式的正确,提供一个空语句起占位功能
a = 10
if a < 10:pass
函数
def function_name (参数, ...) -> return value_type:# 函数体return value# 看具体需求# 如果没有return语句,函数执行完毕后也会返回结果# 只是结果为None。return None可以简写为return
Python中返回多个值
返回的是一个元组对象,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便;
而C++中返回多个值,可以采用输出型参数或者是返回一个类对象
def function_name (参数, ...):return a, b ,c
如果函数的返回值我们只使用一部分,不关注其他的返回值,可以使用占位符 ‘ _ ’来进行占位
def func():return 1, 2, 3_, _, a = func()
print('a = %d' % a)
空函数
def func():pass
相关文章:

Python基础语法(与C++对比)(持续更新ing)
代码块 Python在统一缩进体系内,为同一代码块C{...}内部的为同一代码块 注释 Python 单行注释:#... 多行注释:... C 单行注释://... 多行注释: /*...*/ 数据类型 1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…...

LeetCode-Leetcode 1120:子树的最大平均值
LeetCode-Leetcode 1120:子树的最大平均值 题目描述:解题思路一:递归解题思路二:0解题思路三:0 题目描述: 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…...

AI在软件开发中的角色:助手还是取代者?
目录 前言 一、AI工具现状:高效助手的崛起 二、AI对开发者的影响:新技能与竞争力的重塑 三、AI开发的未来:共生而非取代 写在最后 前言 随着科技的飞速发展,生成式人工智能(AIGC)在软件开发领域的应用日…...

jboss 7.2
链接: https://pan.baidu.com/s/19PSAy-Wy8DjcUMy94eqWnw 提取码: rgxf 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v3的分享链接: https://pan.baidu.com/s/19PSAy-Wy8DjcUMy94eqWnw 提取码: rgxf 复制这段内容后打开百度网盘手机App…...

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥生成介绍及算法规格】
密钥生成介绍及算法规格 当业务需要使用HUKS生成随机密钥,并由HUKS进行安全保存时,可以调用HUKS的接口生成密钥。 注意: 密钥别名中禁止包含个人数据等敏感信息。 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harm…...

电气-伺服(4)CANopen
一、CAN Controller Area Network ,控制器局域网,80年的德国Bosch的一家公司研发可以测量仪器直接的实时数据交换而开发的一款串行通信协议。 CAN发展历史 二、CAN 的osi 模型 CAN特性: CAN 的数据帧 三、CANopen 什么是CANopen CANopen 的网络模型 …...

JavaFx基础知识
1.Stage 舞台 如此这样的一个框框,舞台只是这个框框,并不管里面的内容 public void start(Stage primaryStage) throws Exception {primaryStage.setScene(new Scene(new Group()));primaryStage.getIcons().add(new Image("/icon/img.png"))…...

学会python——用python制作一个登录和注册窗口(python实例十八)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.登录和注册窗口 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…...

Vue3+Element-plus的表单重置
作用:简化代码,重置表单数据 1.创建表单,绑定表单数据对象model,并且每一表单需要绑定prop <el-button type"primary" click"Formreset">重置</el-button> <el-form :inline"true" :model"fromModel" ref"form&q…...

pytorch中的contiguous()
官方文档:https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为: Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…...

Windows系统安装分布式搜索和分析引擎Elasticsearch与远程访问详细教程
文章目录 前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 前言 本文主要介绍如何在Windows系统安装分布式搜索和分析引擎Elasticsearch,…...

界面材料知识
界面材料是用于填充芯片和散热器之间的空隙,将低导热系数的空气挤出,换成较高导热系数的材料,以提高芯片散热能力。参考下图 图片来源网上 热阻是衡量界面材料性能最终的参数,其中与热阻有关的有: 1、导热系数&#x…...

【Git】远程仓库操作
创建远程仓库 在官网进行注册登录:Gitee或Github 进入后点击新建仓库,默认选项创建即可 **仓库创建完成后可以看到SSH的仓库地址:gitgitee.com:username/test.git**或gitgithub.com:Toukensan/test.git 配置SSH公钥 在本地通过命令行创建…...

clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装
前言: 总共需要2个u盘,一个装再生龙系统,一个是使用再生龙把硬盘备份到另一个盘里面,恢复的时候,先使用再生龙引导,然后再插上盘进行复制 1.制作启动u盘 1.1下载再生龙Clonezilla 下載 1.2下载UltraISO(https://cn.ultraiso.net/uiso9_cn.exe) 1.3 打开UltraISO,选择co…...

短视频电商源码的优势及软件架构解析
短视频电商源码是目前电商行业中非常火热的一个新兴领域,它通过短视频内容和电商商品的结合,为用户提供了一种新的购物体验。下面将介绍短视频电商源码的优势以及软件架构。 首先,短视频电商源码具有以下几个优势: 1、创新的购物体…...

Git使用[推送大于100M的文件后解救办法]
推送大于100M的文件后解救办法 本文摘录于:https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…...

RClone挂载有阿里云的AList
转自个人博客:https://www.jjy2023.cn/2024/05/23/rclone%e6%8c%82%e8%bd%bd%e6%9c%89%e9%98%bf%e9%87%8c%e4%ba%91%e7%9a%84alist-md/ RClone挂载一般的AList可以直接使用mount命令,但是阿里云需要使用指定头部Referer:https://www.aliyundrive.com/ &a…...

[ruby on rails]rails6.0升级6.1
1.准备工作 在开始升级过程之前,我们有一些建议的准备工作。 升级的时候,最好一个版本一个版本升级,比如6.0到6.1再到7.0,不要一次从6.0到7.0至少80%的测试覆盖率,测试真的很重要,能确保升级快速完成。本…...

大模型日报 2024-07-04
大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点:超 25 人,覆盖全产业链,AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业,涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…...

技术成神之路:设计模式(一)单例模式
在软件设计中,有时我们希望某个类的实例始终是唯一的,即无论在何处访问这个类,都能够得到同一个实例。单例模式(Singleton Pattern)就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例,并提供一…...

四、(3)补充beautifulsoup、re正则表达式、标签解析
四、(3)补充beautifulsoup、re正则表达式、标签解析 beautifulsoupre正则表达式正则提取标签解析 beautifulsoup 补充关于解析的知识 还需要看爬虫课件 如何定位文本或者标签,是整个爬虫中非常重要的能力 无论find_all(ÿ…...

Vscode快捷键崩溃
Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》...

Spring Boot中的开发工具与插件推荐
Spring Boot中的开发工具与插件推荐 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…...

qt6 获取百度地图(一)
需求分析: 要获取一个地图, 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后,要渲染地图 上面这这些动作,要进行http查询: 为此要有三个QNet…...

overlap的uORF对TE的抑制程度为什么显著高于non-overlap的uORF
在翻译调控中,上游开放阅读框(uORFs)对主开放阅读框(main ORF)的抑制效果有很大差异,尤其是重叠的uORFs(overlap uORFs)通常比非重叠的uORFs(non-overlap uORFsÿ…...

面向高精度导航定位领域的UM980RTK定位模块
UM980 是和芯星通自主研发的新一代 BDS/GPS/GLONASS/Galileo/QZSS 全系统全频高精度 RTK 定位模块,基于和芯星通自主研发的新一代射频基带及高精度算法一体化GNSS SoC 芯片—NebulasIV 设计。可同时跟踪 BDS, GPS, GLONASS, Galileo, QZSS, NavIC, SBAS, L-Band* 等…...

145-四路16位125Msps AD FMC子卡模块
一、概述 该板卡可实现4路16bit 125Msps AD 功能,是xilinx开发板设计的标准板卡。FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中都使用。该AD,DA子卡模块就专门针对xilinx开发…...

服务器被劫持
当服务器被劫持时,可以采取一系列措施来修复和加强安全防护,确保服务器的安全性和数据的完整性。以下是一些建议的步骤和策略:12 确认服务器被劫持:首先需要确认服务器是否被劫持。这可以通过检查服务器的日志、网络流量、以及任…...

康姿百德磁性床垫好不好,效果怎么样靠谱吗
康姿百德典雅款床垫,打造舒适睡眠新体验 康姿百德床垫是打造舒适睡眠新体验的首选,其设计能够保护脊椎健康,舒展脊椎,让您享受一夜好眠。康姿百德床垫的面料选择也非常重要,其细腻亲肤的针织面料给您带来柔软舒适的触…...