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 软硬一体…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...