Python基础语法(与C++对比)(持续更新ing)

news2025/1/18 20:12:56

代码块

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤

容器技术 容器借鉴了集装箱的概念&#xff0c;集装箱解决了什么问题呢&#xff1f;无论形状各异的货物&#xff0c;都可以装入集装箱&#xff0c;集装箱与集装箱之间不会互相影响。由于集装箱是标准化的&#xff0c;就可以把集装箱整齐摆放起来&#xff0c;装在一艘大船把他们…

昇思学习打卡-5-基于Mindspore实现BERT对话情绪识别

本章节学习一个基本实践–基于Mindspore实现BERT对话情绪识别 自然语言处理任务的应用很广泛&#xff0c;如预训练语言模型例如问答、自然语言推理、命名实体识别与文本分类、搜索引擎优化、机器翻译、语音识别与合成、情感分析、聊天机器人与虚拟助手、文本摘要与生成、信息抽…

通过 Power Automate 以提升的权限运行 Power Apps 连接

使用Power Apps在Sharepoint列表中新建或编辑项比较简单&#xff0c;就是创建窗体&#xff0c;连接Sharepoint列表&#xff0c;添加个按钮&#xff0c;触发条件为Submit(form)。 填写信息&#xff0c;点击按钮即可新建项 但使用过程中&#xff0c;发现运行此应用的用户&#xf…

朗新天霁eHR GetFunc_code.asmx SQL注入致RCE漏洞复现

0x01 产品简介 朗新天霁人力资源管理系统(LongShine eHR)是一款由北京朗新天霁软件技术有限公司研发的人力资源管理系统,该产品融合了国外先进的人力资源管理理念和国内大量人力资源管理实践经验,是国内功能较为全面、性价比较高的人力资源管理系统之一,系统凭借其集成化…

如何通过IP地址查询地理位置及运营商信息

在数字时代&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff0c;互联网协议地址&#xff09;已经成为我们日常网络活动的重要组成部分。每台连接到互联网的设备都被分配了一个唯一的IP地址&#xff0c;它不仅可以识别设备&#xff0c;还可以揭示设备的地理位置…

以太网协议介绍——UDP

注&#xff1a;需要先了解一些以太网的背景知识&#xff0c;方便更好理解UDP协议、 以太网基础知识一 以太网基础知识二 UDP协议 UDP即用户数据报协议&#xff0c;是一种面向无连接的传输层协议&#xff0c;属于 TCP/IP 协议簇的一种。UDP具有消耗资源少、通信效率高等优点&a…

MySQL 9.0 GA 来了!

2024 年 7 月 2 日&#xff0c;MySQL 9.0 GA 版本正式发布。还记得 MySQL 8.0 版本正式发布于 2018 年 4 月 19 日&#xff0c;中间经过了 6 年之久&#xff0c;MySQL 官方终于发布了大版本号变更得 9.0 版本&#xff0c;接下来由我给大家介绍 MySQL 在 9.0 版本中有哪些新的变…

经典低功耗四通道运算放大器LM324

前言&#xff1a; SOP14封装LM324 这个LM324运放有几十年的历史了吧&#xff1f;很普通&#xff0c;很常用&#xff0c;搞电路的避免不了接触运放&#xff0c;怎么选择运放&#xff0c;是工程师关心的问题吧&#xff1f; 从本文开始&#xff0c;将陆续发一些常用的运放&#xf…

2024 AI工程师世界博览会

6月24日至6月27日在旧金山举行的 AI 工程师世界博览会是AI 从业者和爱好者的首要活动之一。本次年度会议展示了人工智能技术的最新进展&#xff0c;并提供了对行业趋势的宝贵见解。 模型不是壁垒 大型语言模型&#xff08;LLMs&#xff09;的快速发展是会议的中心主题。OpenAI…

单片机软件架构连载(4)-结构体

枚举、指针、结构体&#xff0c;我愿称为C语言"三板斧"。 用人话来讲&#xff0c;几乎所有c语言高阶编程&#xff0c;都离不开这这3个知识点的应用。 今天站在实际产品常用的角度&#xff0c;给大家讲一下结构体。 1.结构体概念 结构体可以用来构建更复杂的数据结…

【病毒分析】假冒游戏陷阱:揭秘MBRlock勒索病毒及其修复方法

1.背景 在公众号文章中看到一篇名为《敲竹杠木马分析&#xff1a;虚假的植物大战僵尸杂交版》的文章&#xff0c;样本来源于某吧&#xff0c;对此我们对样本进行了提取分析。 文章链接&#xff1a;https://mp.weixin.qq.com/s/Up9u4DZtHnVNMiGBIHZzHw 2.恶意文件基础信息 文…

鸿蒙开发设备管理:【@ohos.update (升级)】

升级 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 升级范围&…

Build a Large Language Model (From Scratch)附录B(gpt-4o翻译版)

来源&#xff1a;https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

上海-灵曼科技(面经)

上海-灵曼科技 hr电话面 个人简介 个人信息的询问 是否知道芋道框架 技术面 算法题 14. 最长公共前缀&#xff08;写出来即可&#xff09; 聊一下Docker Docker核心概念总结Docker实战 聊一下AOP Spring AOP详解 聊一下JWT JWT 基础概念详解JWT 身份认证优缺点分析 Spri…

智能猫砂盆到底哪家好用?自费实测聚宠、糯雪、CEWEY真实反馈!

快到夏天了&#xff0c;是不是还有人因为没挑选到喜欢的智能猫砂盆而苦恼着&#xff1f;太便宜怕不好用&#xff0c;太贵怕质量比不上价格。来来去去拖到现在还没决定&#xff0c;我作为养了四年猫的资深铲屎官&#xff0c;今天就来给大家传授经验&#xff0c;关于我是怎么从好…

记录通过Cloudflare部署属于自己的docker镜像源

引言 由于最近国内无法正常拉取docker镜像&#xff0c;然而找了几个能用的docker镜像源发现拉取回来的docker镜像不是最新的版本&#xff0c;部署到Cloudflare里Workers 和 Pages&#xff0c;拉取docker 镜像成功&#xff0c;故记录部署过程。 部署服务 登录Cloudflare后&…

Xilinx FPGA:vivado关于RAM的一些零碎的小知识

一、xilinx fpga嵌入式存储单元 RAM----随机存取存储器&#xff1a;上电工作时可以随时从任何一个指定的地址写入&#xff08;存入&#xff09;或读出&#xff08;取出&#xff09;信息。缺点是一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时性存储程序、数…

openlayers中区域掩膜的实现

概述 在前文完成了mapboxGL中区域掩膜的实现。近日有人问到说在openlayers中如何实现&#xff0c;本文就带大家看看如何在openlayers中实现区域掩膜。 实现效果 实现 1. 实现思路 在地图容器中添加一个canvas&#xff0c;设置其在map之上&#xff1b;监听map的postrender事…

1-认识网络爬虫

1.什么是网络爬虫 ​ 网络爬虫&#xff08;Web Crawler&#xff09;又称网络蜘蛛、网络机器人&#xff0c;它是一种按照一定规则&#xff0c;自动浏览万维网的程序或脚本。通俗地讲&#xff0c;网络爬虫就是一个模拟真人浏览万维网行为的程序&#xff0c;这个程序可以代替真人…

在虚拟仿真中学习人工智能,可以达到什么目标?

人工智能已经成为引领社会创新的关键力量&#xff0c;想要在这个充满机遇的领域中脱颖而出&#xff0c;掌握扎实的专业技能和积累丰富的实践经验至关重要。然而&#xff0c;许多学习者在追求这一目标的过程中面临着几个主要问题&#xff1a;专业技术掌握有难度、实践经验积累存…