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

python语言总结(持续更新)

本文主要是总结各函数,简单的函数不会给予示例,如果在平日遇到一些新类型将会添加

基础知识

输入与输出

print([要输出的内容])输出函数

input([提示内容]如果输入提示内容会在交互界面显示,用以提示用户)输入函数

注释

#

单行注释符,加在语句后面,或者单独为一行均不会被python程序解释

三引号(eg.'''    """)

多行注释,这里与字符区分就是仅用三引号引起来,而不赋值,这就仅是一个注释

变量

变量就是一个名字,需要先定义(或者赋值)再使用。变量的命名要符合标识符的命名规范,标识符相当于名字,包括变量名/函数名/类名

标识符的命名规范:

  1. 可以由字母,数字(数字不能作为标识符的开头),下划线组成
  2. 区分大小写
  3. 不能使用关键字和保留字

    关键字:if,while,for,as,import

    保留字:input,print,range

  4. 没有长度限制
  5. 最好是能根据名字明白意思,eg.数字就用num或者number
  6. 大小写:

  1. 包名:全小写,例如 time ;
  2. 类名:每个单词的首字母大写,其他的小写,简称大驼峰命名,例如 HelloWorld ;
  3. 变量名/函数名:第一个单词的首字母小写,后面的单词的首字母大写,简称小驼峰命名,例如 helloWorld ;
  4. 常量:全大写,例如 HELLO 。

数据类型分类

  1. 整型:整数,int
  2. 浮点型:小数,float
  3. 复数:包含实数也包含虚数,complex(real[,imag]){这里的real是复数的实部,imag是复数的虚部}
  4. 字符串:字符 ,str        表现形式:‘xxx’,“xxx”,"""xxx""",'''xxx'''
  5. 布尔类型:bool,返回值分为Flase,Ture。1为真,0为假
  6. None是一个单独的数据类型,标识空或者不存在的值。若将变量赋值为None,标识该变量没有实际的值

    不存在的值:如果一个变量尚未赋值或其值是未知的,则将它设置为 None。

    空集合:None 可以用于表示空集合、空列表或空字典。

    函数返回值:当函数没有要返回的明确值时,可以使用 None 作为返回值。

  7. 列表,元组,字典,集合(这四个类型后续详讲)

类型转换(仅常见的)

字符串转数字

int(str)[转为整数]   /    float(str)[转为浮点数]

其中的str只可以由数字组成

浮点型与整型互换

浮点转整型

int(float)  直接去掉小数部分,保留整数部分

整型转浮点型

float(int)未表明精确度,默认为一位小数

数字转字符

str(int)[整型转字符]   /   str(float)[浮点转字符]

 获取类型

type()函数

type(对象[可以先将对象赋值给一个变量再type;也可以直接将对象放在圆括号中])

 type()函数返回的是对象的类型

>>> a=123
>>> type(a)
<class 'int'>
>>> type([1,23,4,5])
<class 'list'>

如果不是在交互型中的,仅仅只是一个type()不会有输出,所以我们需要print()配合嵌套使用,即print(type(对象)),或者将type(对象)赋值给一个变量再print(变量)

isinstance()函数

isinstance(对象,class)class是种类的意思

返回的值是布尔值,即这个函数是自己猜测类型,再用这个函数来确定类型是否正确(这个函数不常用)

运算符

一般运算符

+(加), -(减), *(乘), /(除)

// (整除,去掉小数部分) , %(取模,或者说是取余),**(幂运算)

比较运算符

返回的是布尔值,即False和True

符号意义
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

赋值运算符

=(简单的赋值符号,eg.a=c+v,就是将c+v的结果赋值给a)

<变量1>[算数运算符]=<变量2>   eg.a+=5,这个等效于a=a+5。也就是算数运算的简写方法,不用重新再赋值,而是将算后的结果直接赋值给前面的变量

位运算符

运算符意义/描述
&按位与运算:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1
~按位取反运算符:将二进制表示中的每一位取反,0 变为 1,1 变为 0。~x 类似于 -x-1
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
<<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。

成员运算符

判断是不是在序列里

in(在)    not in(不在)

身份运算符

判断二者的标识符是不是引用自同一个对象

is(是)   is not(不是)

逻辑运算符

and     与          两者同时为真才为真,一假为假

or        或          两者任一为真就为真,全假为假

not       非         非真,非假

注意运算先后

数字运算函数

abs(x)  绝对值函数,取x的绝对值

divmod(x,y)   商余函数。表示(x//y,x%y) 二元组形式输出,含括号

pow(x,y[,z])如果仅有x和y就仅仅只是x**y,y是指数,如果有三个参数,就是x**y%z(模幂运算)

round(x[,d])计算保留函数。对x取舍,保留d位小数“四舍五入”,没有d就四舍五入为整数

max( , , , , )在一堆数中取最大的

min( , , , , )在一堆数中取最小的

字符串操作

len(x)返回字符串x的长度,或者组合数据类型的元素个数

str(x)任意类型x转字符类型

chr(x)返回Unicode编码对应的单字符

ord(x)返回单字符的Unicode编码

range的语法:

range(start,end,step=num)

start和end可以为空,start就是字符串开始,end就是字符串结尾,step可以为负数,为负就代表反向获取字符

如果是遍历字符串的话:

start和end可以是顺次的索引,也可以是逆向的索引,但是start所索引的字符的位置必须在end所索引的位置之前

for i in range(start,end,step):
<tab>[语句块]

step如果不设置就表示步长为1,直接依次遍历;如果有步长,就从start到end-1的字符串中提取步长为n的字符

流程控制

条件判断

顺次往下进行,不返回进行

if(单分支)

if [需要进行的条件判断,布尔表达式]:
<一个tab>[语句块]

当条件判断后为真,就进行语句块的执行

if else(双分支)

if [布尔表达式,条件判断]:
<tab>[语句块]
else:
<tab>[语句块]

if条件判断为真就进行if下面的语句块的执行,否则执行else的语句块

if elif else(多分支)

if [条件判断表达式]:
<tab>[语句块]
elif [条件判断表达式]:
<tab>[语句块]
.
.
.
elif [条件判断表达式]:
<tab>[语句块]
else:
<tab>[语句块]

当if语句为真,就执行其下方的语句块(后面的判断就不会经历),否则就往后进行条件判断,直到为真时停【一旦在if或各elif语句实现了判断为真就跳出这个结构,直接进行else的语句块以后的程序;如果前方的都不满足,就执行else的语句块】

条件判断的嵌套使用

s = int(input("请输入分数:"))
if 80 >= s >= 60:print("及格")
elif 80 < s <= 90:print("优秀")
elif 90 < s <= 100:print("非常优秀")
else:print("不及格")if s > 50:print("你的分数在60分左右")else:print("你的分数低于50分")

循环结构

for循环(遍历循环)

知道遍历次数,或者有需要遍历的对象进行提取其中的东西

range

遍历n次,i从0到n-1

for i in range(n):
<tab>[语句块]

遍历字符串
for i in s:
<tab>[语句块]

逐一提取字符串s中的字符并赋给i

enumerate()
for index,char in enumerate(x):
<tab>[语句块]

 利用enumerate函数遍历字符串x,并获取字符串x的每一个字符及其对应的索引

遍历列表
for item in ls:
<tab>[语句块]

 遍历列表ls里的每一个元素

遍历文件f
for line in f:
<tab>[语句块]

 逐一提取文件f的每一行

whlie循环(条件循环)

不知道需要循环的次数。条件循环是只要满足条件就一直循环下去,知道条件为False后才会结束

while [条件]:
<tab>[语句块]

 循环控制

break

跳出最内层的循环,仅是跳出当前层的循环,外层循环将会继续

continue

结束当前当次的尚未执行的语句,但不跳出当前循环。

对于while循环:遇continue将返回,继续判断循环条件

对于for循环:遇continue将返回,程序继续遍历下一个元素

for s in "dasgfsasdgadgs":

        if s=="s":

                countinue

        print(s,end='')

#dagfadgadg

for s in "dasgfsasdgadgs":

        if s=="s":

                break

        print(s,end='')

#da

continue与break的区别

continue仅结束本次循环

break直接结束整个循环过程

 字符串(str)

字符串的特点:

1. 字符串不可变类型
2. 字符串是可迭代对象
3. 字符串支持索引和切片操作
4. 支持操作符;

字符串的操作

       拼接:+   #字符串a与字符串b连接起来
        重复操作符:*   #将字符串重复
        比较运算符: > < <= >= == !=
        逻辑运算符:not and or
        成员关系: in    not in       

字符串的处理

格式化输出

格式化输出有多种表达方式,且在日常经常会遇见吗,常用的方法有 format 和 $% 。

format

仅有{}占位,无下标的对应

顺序是前后对应的

a='python'
b='easy'
print("{} is {}".format(a,b))
#python is easy

用{}数字(小标)占位

以format内的顺序为下标来对应前面的数字,此处b的下标为1,a的下标为1,所以就得是b,a

a='python'
b='easy'
print("{1} is {0}".formate(b,a))
#输出:python is easy

用{}字母(标识符)占位

将需要加入的内容在format中写出,其标识符在输出字段里占位

print("{a} is {b}".format(a='python',b='easy'))
#python is easy

%s

常见的是参数可以为任意值

for i in range(1, 10):for j in range(1, i + 1):print("%s * %s = %s" % (i, j, i * j), end="\t")print()

转义字符

\n 换行

\\  反斜杠

\'   单引号

\"   双引号

\t    制表符

列表(List)

列表是可以存放任何数据,包括整型,浮点型,字符串,布尔型等等,是常用的数据类型之一。

列表也是一个可迭代对象
1. 普通形式
        l = [1,2,3,4,5] ---整型列表
        l = ["a","b","c"] ---字符串列表
        l = [True,False,1>2,5<6]---布尔列表
2. 混合列表
        l = [1,2.5,"a",True]
3. 空列表
        l = []

创建列表

  • 先定义一个空列表,再用函数加入元素
l=[]
l.append()
  • 列表中含有元素直接创建
l=[1,23,43,'adf',True]
  • 用list函数
l=list(一个组合类型的数据)

获取列表元素

for循环

l=['a',1,23,'sdf']
for i in l:print(i,end='')#a123sdf

下标提取

这个的下标与字符串的相同

l=[12,23,354,56]
print(l[1])#23

添加元素

交换元素的位置

l = [1, 2, 3, 4, 5]  # 下标/索引:0开始
l[2], l[3] = l[3], l[2]
print(l)

改值

l[a:b]=['希望改后的结果s1',‘希望改后的结果s2’.......]#这里的a,b是l列表的将被改动的区域的下标,如果后面的不满足前面的个数,遵循“多增少减”(也就是以后面的为准)

删除元素

列表元素重新排序

l.sort(reverse=False)    默认将列表从小到大排列

字典

字典用于储存数据,其中的数据以映射关系存储(key:value)

特点

1. 字典是Python中唯一的映射类型
2. 字典是无序的
3. 字典是可迭代对象
4. 字典的构成
    键:key
    值:value
    映射:键映射值
    键-值:键值对,又叫 项

创建字典

直接创建

d={}
#d={}  空列表
#d = {"name":"不良人","apple":"苹果"}

dict()函数

d=dict()  得到空列表
d=dict(key1=value1,key2=value2...)  得到列表d{key1:value1,key2:value2...}

dict(可迭代对象)

将可以有对应关系的转为字典

d3 = dict([("one",1),("two",2)])
print(d3)
#{one:1,two:2}

字典的访问

<dict>['key']

变量名[键名] #输出键所对应的值

d = {"name":"不良人","apple":"苹果"}
print(d["name"])
#输出:不良人

字典的一些处理

1.添加一个键值对
        变量名[键名]=值
2.修改一个键值对的值
        变量名[已有的键名]=值

字典的for循环

1. 字典可以使用for循环

    for i in d2:
        print(i) #键,不包含值

2. 输出一个键值对

    for i in d2.items():
        print(i)

3. 成员关系操作符

    in/not in

        只能查询键

函数

print(r.recvall())

‌ 是使用 Python 的 requests 库发送网络请求时,用于接收服务器响应的全部内容。

这种在pwn的exp中可以运用到,用于连接服务器后将所有都输出

eval()函数

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

字符串表达式可以包含变量、函数调用、运算符和其他 Python 语法元素。

语法:

eval(expression[, globals[, locals]])
  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

eval() 函数将字符串转换为相应的对象,并返回表达式的结果。

注意: eval() 函数执行的代码具有潜在的安全风险。如果使用不受信任的字符串作为表达式,则可能导致代码注入漏洞,因此,应谨慎使用 eval() 函数,并确保仅执行可信任的字符串表达式。

自定义函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def sum(a,b):sum=a+bprint(sum)
sum(3,5)
#输出8

自定义函数后的调用,就直接用自己定义的函数名就行了,比如上面的例子就是定义了一个函数sum用来求和;然后一个sum(3,5)实现了调用sum函数,并且将3传给形参a,5传给形参b

函数运行机制

1. 从函数调用开始执行
2. 通过函数名字找到函数定义的位置(创建函数的位置)
3. 执行函数体
4. 执行完毕之后,返回到函数的调用处

函数变量机制

分为两个变量:局部变量和全局变量

1. 局部变量
        定义在函数内部的变量
        先赋值在使用
        从定义开始到包含他的代码结束
        在外部无法访问
2. 全局变量
        1. 定义在源文件的开头
        2. 作用范围:整个文件
        3. 局部变量和全局变量发生命名冲突时,以局部变量优先

3.global:

        声明全局变量

4.nonlocal

        声明局部变量

这里的global需要理清楚

在函数中,可以访问全局变量,并使用其值。但是如果不对变量进行global宣言,则不会改变全局变量的值。

a=1
def sum(x):a=12print(x+a)
sum(3)
print(a)
#15
#1

如果需要在函数中改变全局变量的值,需要在函数中先定义global,用例如下。

a=1
def sum(x):global aa=12print(x+a)
sum(3)
print(a)
#15
#12

函数的参数:

  • 形式参数:形参

        在定义函数的时候传递的参数

  •  实际参数:实参    

        在调用函数时传递的参数

  •  无参

        没有任何参数

  • 地址参数

        实参的位置与形参的位置一一对应,不能多也不可少这个例子中3和5既是实参,也是地址参数

  • 默认参数:

        给了默认值的参数--形

  如果传递了新的值,那么默认值就被覆盖了

def sum(a=1,b=2):sum=a+bprint(sum)
sum()
sum(10,5)
#3
#15

if __name__ == '__main__':

这个在本次开学考中有所遇见,但是当时不太懂,现在补一下

用于判断当前运行的脚本是否是主程序,而不是被其他脚本导入的模块。这是Python的一种约定俗成的用法,用于控制脚本的执行流程。这个条件判断确保了,只有当该脚本被直接运行时,紧随其后的代码块才会被执行。如果该文件被其他Python脚本通过import语句导入,那么这部分代码将不会执行。

通常是先用def()函数实现了自定义函数,再通过该语句来判断是否为主函数(没有被导入其他脚本),如果是主函数就执行

def main():print("This is the main program.")if __name__ == "__main__":main()

例如这个代码,只有当这个自定义的main函数没有被导入一个脚本时会被执行

百度安全验证

Python 运算符 | 菜鸟教程

相关文章:

python语言总结(持续更新)

本文主要是总结各函数&#xff0c;简单的函数不会给予示例&#xff0c;如果在平日遇到一些新类型将会添加 基础知识 输入与输出 print([要输出的内容])输出函数 input([提示内容]如果输入提示内容会在交互界面显示&#xff0c;用以提示用户)输入函数 注释 # 单行注释符&…...

leetcode15 三数之和

1.哈希法 为了避免重复 class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {set<vector<int>> temple;//使用 set 来存储符合条件的三元组&#xff0c;避免重复vector<vector<int>> out;//存放最终输…...

深入探讨AI-Ops架构 第一讲 - 运维的进化历程以及未来发展趋势

首先&#xff0c;让我们一起回顾运维的进化之路&#xff0c;然后再深入探讨AI-Ops架构的细节。 运维的进化历程 1. AI 大范围普及前的运维状态 (传统运维) 在AI技术尚未广泛渗透到运维领域之前&#xff0c;我们称之为传统运维&#xff0c;其主要特点是&#xff1a; 人工驱动…...

Android Native 之 文件系统挂载

一、文件系统挂载流程概述 二、文件系统挂载流程细节 1、Init启动阶段 众所周知&#xff0c;init进程为android系统的第一个进程&#xff0c;也是native世界的开端&#xff0c;要想让整个android世界能够稳定的运行&#xff0c;文件系统的创建和初始化是必不可少的&#xff…...

常用word python matlab快捷键

这里写自定义目录标题 WordMatlabpythonlinuxWord Matlab 1 结构体 字符串成员做索引,必须()类似python* 解包作用,转化字符串到属性类型 如果属性名存入列表 a = [“para1”] 比如stru1.para1 = [‘c’,‘d’]; 那么若要用a中para1来索引,必须要加圆括号; ==》 X Strut…...

MySQL------存储引擎和用户和授权

9.存储引擎 1.两种引擎 MyISAM和InnoDB 2.两种区别 1.事务&#xff1a; MyISAM不支持事务 2.存储文件: innodb : frm、ibd MyISAM: frm、MYD、MYI 3.数据行锁定: MyISAM不支持 4.全文索引: INNODB不支持&#xff0c;所以MYISAM做select操作速度很快 5.外键约束: MyISAM…...

react拖曳组件react-dnd的简单封装使用

分享原因 由于项目中需要使用拖曳组件(需求:全局&#xff0c;跨组件&#xff0c;跨数据)&#xff0c;我选择了react-dnd 概念 React DnD 是一组 React 高阶组件&#xff0c;我们在使用的时候只需要将目标元素进行包裹&#xff0c;就可以实现目标元素具有拖动或接受拖动的功能。…...

Excel中COUNTIF用法解析

COUNTIF 是 Excel 中一个非常实用的函数&#xff0c;用于统计满足某个条件的单元格数量。它的基本语法如下&#xff1a; 基本语法 COUNTIF(范围, 条件) 范围&#xff1a;需要统计的单元格区域&#xff0c;例如 A1:A10 或整列 A:A。 条件&#xff1a;用于判断哪些单元格需要被…...

Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!

目录 前言1. 变量&#xff08;不生效&#xff09;2. 延迟&#xff08;生效&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中&#xff0c;使用 onShow() 钩子来监听页面显示&#xff0…...

《论数据湖技术及其应用》审题技巧 - 系统架构设计师

论题写作框架 一、考点概述 “数据湖技术及其应用”这一论题主要考察的是软件测试工程师对于前沿数据存储与处理技术的理解及其在软件开发项目中的实际应用能力。具体而言&#xff0c;该论题涵盖了以下几个核心考点&#xff1a; 软件项目管理与开发经验 &#xff1a;要求考生…...

C++蓝桥杯基础篇(八)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们一起来学习C蓝桥杯基础篇&#xff08;八&#xff09;&#xff0c;练习相关字符串的习题&#xff0c;准备好了吗&#xff1f;Are you ready? Lets go! 第1题 字符串中的数字个数 这道题&#xff0c;我们用字符数组或者…...

AI 实战 - pytorch框架基于retinaface实现face检测

pytorch框架基于retinaface实现face检测 简介模型结构MobileNet-0.25SSH结构Head结构 Anchor编解码 环境开发环境 数据简介 训练测试参考 简介 RetinaFace是在RetinaNet基础上引申出来的人脸检测框架&#xff0c;所以大致结构和RetinaNet非常像。 主要改进&#xff1a;1.Mobi…...

如何在PHP中实现API版本管理:保持向后兼容性

如何在PHP中实现API版本管理&#xff1a;保持向后兼容性 在现代Web开发中&#xff0c;API&#xff08;应用程序编程接口&#xff09;是连接前端和后端的关键桥梁。随着业务需求的不断变化&#xff0c;API的版本管理变得尤为重要。良好的版本管理策略不仅能够确保新功能的顺利引…...

Docker Compose企业示例

利用容器编排完成haproxy和nginx负载均衡架构实施 1.mkdir docker.test 2.touch haproxy.yml 3.mkdir /var/lib/docker/volumes/conf 4.dnf install haproxy -y --downloadonly --downloaddir/xixi&#xff1a;下载内容到/xixi目录下 5. rpm2cpio haproxy-2.4.22-4.el9.x8…...

TMS320F28P550SJ9学习笔记6:SCI所有寄存器__结构体寄存器方式配置 SCI通信初始化__库函数发送测试

继续学习如何使用结构体寄存器的方式配置这款单片机的外设&#xff0c;这里配置SCI通信的初始化 但SCI gpio 的初始化还是调用的库函数比较方便&#xff0c;它的发送部分页调用了库函数 有关收发方面的逻辑&#xff0c;我会在之后重新自己写一次 文章提供测试代码讲解、完整…...

详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!

以下是基于脚本实现MySQL一键安装与配置的详细方案&#xff0c;涵盖Linux主流系统&#xff08;CentOS/Ubuntu&#xff09;及Windows环境&#xff0c;结合自动化部署与高可用性扩展&#xff0c;旨在提升运维效率&#xff1a; 一、Linux系统&#xff08;CentOS 7.x&#xff09;一…...

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务&#xff0c;在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外&#xff0c;平台还支持用户自行上传视频文件&#xff0c;也可将上传的点播…...

增删改查 数据下载 一键编辑 删除

index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…...

【Go学习实战】03-2-博客查询及登录

【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…...

回溯算法(C/C++)

目录 一、组合问题 组合 组合剪枝 组合总和 III​编辑 组合总和​编辑 组合总和 II 电话号码的字母组合​编辑 二、分割问题 分割回文串 复原 IP 地址 三、集合问题 子集 子集 II 非递减子序列 四、排列问题 全排列 全排列 II 五、棋盘问题 N 皇后 课程&#x…...

物联网智慧农业一体化解决方案-可继续扩展更多使用场景

在智慧农业中,从种子、施肥、灌溉、锄地、农具管理、日常照料到蔬菜档案管理,以及与客户、供应商、市场的对接,可以通过物联网(IoT)、大数据、人工智能(AI)、区块链和云计算等技术,构建一个从生产到销售的全流程数字化、智能化农业生态系统。以下是实现方案和技术路径的…...

Jackson 详解

目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一&#xff0c;广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能&#xff0c;支持注解、模块化设计和多种数据格式&#xff08;如 XML、YAML&#xff09;。本文将详细介…...

游戏引擎学习第143天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并规划今天的内容 目前&#xff0c;我们正在进行声音混合的开发。我们已经写好了声音混合器&#xff0c;并且已经实现了一些功能&#xff0c;比如声音流播放和音量插值。过去一周我们做了很多工作&#xff0c;进展非常快。不…...

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…...

Nginx解决前端跨域问题

1. 理解 CORS 和同源策略 1.1 同源策略 同源策略是一种浏览器安全机制&#xff0c;用于阻止不同源&#xff08;不同域名、协议或端口&#xff09;的 Web 应用相互访问数据。它确保了 Web 应用的隔离性&#xff0c;防止恶意网站访问用户数据或执行不安全的操作。 同源策略下&…...

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器&#xff0c;可以让用户愉快的从繁琐的工作中解放出来&#xff0c;其本质是对键盘和菜单的操作序列的录制&#xff0c;并不会识别文件的内容&#xff0c;属于无差别无脑执行。 特别是对一些有规律的重复按键动作&#xff0c;…...

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…...

【计算机网络】Socket

Socket 是网络通信的核心技术之一&#xff0c;充当应用程序与网络协议栈之间的接口。 1. Socket 定义 Socket&#xff08;套接字&#xff09;是操作系统提供的 网络通信抽象层&#xff0c;允许应用程序通过标准接口&#xff08;如 TCP/IP 或 UDP&#xff09;进行数据传输。它…...

Electron应用中获取设备唯一ID和系统信息

让我创建一篇关于如何在Electron应用中获取设备唯一ID和系统信息&#xff0c;并在登录时使用这些信息的博客文章。我将确保步骤明确、条理清晰&#xff0c;适合初学者和有经验的开发者。 这篇博客应包含以下部分&#xff1a; 介绍 - 为什么需要获取设备信息前提条件和安装依赖…...