当前位置: 首页 > news >正文

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++

静态类型语言

        程序员需要手动管理内存,包括用newdelete操作符来分配和释放内存   

常量

PythonPython没有真正意义的常量,通常用全大写的字母来表示常量,但是这些常量本质依旧是可以改变的变量,只不过是对程序员的一种非限制性约束,只要程序员看到全大写的变量,会默认这是一个不可修改的变量,即常量。
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 :使用以f开头的字符串,内部如果包含{变量名},就会以对应的变量替换

(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在统一缩进体系内&#xff0c;为同一代码块C{...}内部的为同一代码块 注释 Python 单行注释&#xff1a;#... 多行注释&#xff1a;... C 单行注释&#xff1a;//... 多行注释: /*...*/ 数据类型 1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…...

LeetCode-Leetcode 1120:子树的最大平均值

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

AI在软件开发中的角色:助手还是取代者?

目录 前言 一、AI工具现状&#xff1a;高效助手的崛起 二、AI对开发者的影响&#xff1a;新技能与竞争力的重塑 三、AI开发的未来&#xff1a;共生而非取代 写在最后 前言 随着科技的飞速发展&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;在软件开发领域的应用日…...

jboss 7.2

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

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥生成介绍及算法规格】

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

电气-伺服(4)CANopen

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

JavaFx基础知识

1.Stage 舞台 如此这样的一个框框&#xff0c;舞台只是这个框框&#xff0c;并不管里面的内容 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()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; 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&#xff0c…...

深入理解计算机系统 CSAPP 家庭作业8.26

...

界面材料知识

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

【Git】远程仓库操作

创建远程仓库 在官网进行注册登录&#xff1a;Gitee或Github 进入后点击新建仓库&#xff0c;默认选项创建即可 **仓库创建完成后可以看到SSH的仓库地址&#xff1a;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…...

短视频电商源码的优势及软件架构解析

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

Git使用[推送大于100M的文件后解救办法]

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

RClone挂载有阿里云的AList

转自个人博客&#xff1a;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命令&#xff0c;但是阿里云需要使用指定头部Referer:https://www.aliyundrive.com/ &a…...

[ruby on rails]rails6.0升级6.1

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

大模型日报 2024-07-04

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

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...