设计师网站推荐家装,去什么网站找做电影的素材,三亚房产网站建设,威海网站建设哪一家代码块
Python在统一缩进体系内#xff0c;为同一代码块C{...}内部的为同一代码块
注释
Python 单行注释#xff1a;#... 多行注释#xff1a;... C 单行注释#xff1a;//... 多行注释: /*...*/ 数据类型
1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…代码块
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单引号、双引号、三引号可以相互嵌套使用完成各种语境 3r ... 表示 内部字符串默认不转义就是普通字符 4line1 ...line2 ...linen 表示多行内容与\n效果一致 bool 1True False 2用于条件选择 while、if 中 30为假、非0为真 空值 None1不为0为一个特殊值
2. C数据类型 整型类型 char short int long long long ... 1根据存放数据的大小由程序员自由选择 2不支持扩容所以才会有这么多类型 3十六进制0x开头 4八进制0开头 浮点数类型 float double 1float单精度浮点数默认字节为4只保留6位小数 2double双精度浮点数默认字节为8 3使用printf函数时如果没有指定精度float与double都 是默认输出6位有效数字此时使用.nf / .nlf来指定输 出的小数位数 4使用cout输出的时候只保留五位小数四舍五入 字符串 1只能用双引号 ... 2以 \0 结尾字符串结束的标志不算字符串的内容 3strlen计算字符串长度不算末尾的 \0 bool类型 1true、false 2默认字节为 1字节 3true为1false为0 40为假非0为真
变量 Python 动态类型语言 1无需显示声明变量的数据类型会根据赋值来自动推导数据类型并且变量的类型可以动态改变 2Python中的变量必须初始化因为变量为对象的引用是别名必须初始化 C 静态类型语言 1变量在使用之前必须声明类型一旦确定类型在其整个生命周期中不允许被改变也不允许其他数据类型进行赋值但C提供了强制类型转换的方法 2变量可以不初始化被称为声明旨在告诉编译器预留出一段空间来存放该数据类型的数据以便后续进行赋值。
变量作用域 Python 动态类型语言 Python分为多级作用域且只有函数和class类的代码块会涉及到作用域if、else、elif、while、for的代码块定义的变量可以在外面使用即属于全局变量 1Python的全局变量与局部变量同名时优先匹配同级作用域的变量若无则找上级作用域的变量 2下级作用域若创建一个与上级作用域同名的变量默认是创建一个新的数据对象对下级作用域中的变量进行修改不会影响上级作用域的同名变量。若想在下级作用域中修改上级变量使用global关键字先标识上级变量再对其进行修改 C 静态类型语言 变量的作用域由大括号来决定生命周期由自身的属性决定但是其可以通过引用传参或指针传参来直接或间接访问变量 全局变量作用域全局生命周期随进程 栈变量作用域和生命周期为所处大括号范围内 堆变量作用域所处大括号范围内生命周期随进程 静态局部变量作用域所处大括号范围内 生命周期随进程 静态全局变量作用域全局生命周期随进程 变量赋值 Python 动态类型语言 在 Python 中变量通过引用指向对象当多个变量被赋值为相同的值时它们实际上指向的是同一个对象。这种机制有助于提高内存使用效率和编程的便捷性需要注意的是Python中赋与相同的值的对象必须是不可变对象多个变量才会指向同一个对象如果是list这种可变对象则会开辟多个空间因为Python不能确保我们后续是否会修改若只开辟一个空间创建一个对象则后续修改一个其他变量也会被修改 C 静态类型语言 C是一种静态类型语言在编译时就需要确定变量的类型和大小这是因为在编译的时候就已经将变量名换成地址了为的是在运行时初始化进程地址空间。在 C中每个变量都有自己独立的内存空间因此可以在不同的作用域中使用相同的变量名而不会相互干扰。这是因为在编译的时候就已经把变量名转换为地址来表示了变量名只是给我们自己看的即使变量名相同但是底层的地址不同就属于不同的变量 内存管理机制 Python 动态类型语言 具有自动的内存管理机制通过垃圾回收器来自动回收不再使用的对象所占用的内存 C 静态类型语言 程序员需要手动管理内存包括用new和delete操作符来分配和释放内存
常量
PythonPython没有真正意义的常量通常用全大写的字母来表示常量但是这些常量本质依旧是可以改变的变量只不过是对程序员的一种非限制性约束只要程序员看到全大写的变量会默认这是一个不可修改的变量即常量。C 1const修饰的常变量给变量添加常属性 2enum枚举常量 3define定义的宏 4字面常量13.14 运算符 算数运算符 - * / % ** // a ** b 数学中的乘方运算b可正、负可整数、小数 a // b 向下取整的除法往小方向取整 1Python中除0或0.0都为除0异常 C中只有除0会抛异常除0.0会得到无穷大的数inf 2Python中int / int 除不尽得到小数不会截断 C中 int / int 除不尽得到整数会截断 关系运算符 ! 1比较整数、比较字符串按照字典序比较 2比较浮点数使用关系运算符比较浮点数的时候存在一定的风险因为浮点数载内存的存储和表示是可能存在误差的这样的误差会在进行算数运算的时候被放大从而导致关系运算符的判断不准。 正确比较浮点数作差判断是否在误差范围 -0.000001 a - b 0.000001 在误差范围就是True反之False 3Python支持连续小于的写法即Python支持连续的条件判断而C/C不支持 逻辑运算符 1andC中的 并且 2or C中的 || 或者 3not 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可以把所有的数据类型转换为字符串类型 第二种 1format函数通过{0}、{1}、{2}这种占位符来进行格式化打印 2占位符: 格式 - 表示需要以哪种形式打印出来数据 { 0 : nd } { 0 : .nf } { 0 : ns } 3与print配套使用 4print ( 我的名字是{ 0 }我{ 1 }岁 .format ( hh , 20 ) ) 第三种 1f-string 使用以f开头的字符串内部如果包含{变量名}就会以对应的变量替换 2与print配套使用 CC语言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} 3key不可以重复、且key为不可变对象所以可以用做key的类型有字符串、整数、浮点数、bool、元组 4查找使用in / not in 来判断在或不在这里是判断key d [key] 存在获得value反之抛异常 d.get( )存在获取value不存在获取None 5插入d [key] valuekey不存在 6修改d [key] valuekey存在 7删除d.pop(key) 8遍历for循环 d.keys( ) 获取所有key d.values( ) 获取所有values d.iitems( ) 获取所有的keyvalues
Python的set set是一组key的集合但是不存储value重复元素会被自动过滤这与C的unordered_set类似 Python 1创建 s { key, key, key, ... } 2key必须是不可变对象 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 1while循环 while 条件 循环体 2for循环 for 循环变量 in 可迭代对象 循环体 C 1while while循环条件 { // 循环体 } 2do-while do { //循环体 } while循环条件 3for 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