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 软硬一体…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
