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

Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)

7e76e20f81694cc09557d2e3a079896f.png

一、函数基础

1.1、函数的用法和底层分析

函数是可重用的程序代码块。

函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。

ef8a10b48ff44127878e9c50cd262326.png

在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并增加了函数调用、传递参数、返回计算结果等内容。 

 1.2、函数简介

1.2.1函数的基本概念

一个程序由一个一个的任务组成;函数就是代表一个任务或者一个功能(function)。

函数是代码复用的通用机制

1.2.2、函数的分类

aae363020b37410298189c93d3eff199.png

内置函数

        我们前面使用的str()list()len()等这些都是内置函数,我们可以拿来直接使用。

标准库函数

        我们可以通过import语句导入库,然后使用其中定义的函数

第三方库函数

        Python社区也提供了很多高质量的库。下载安装这些库后,也是通过import语句导入,然后可以使用这些第三方库的函数

用户自定义函数

        用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。今天我们学习的就是如何自定义函数。

1.2.3、 函数的定义和调用

        实现某个功能的一段完整的代码code. 使用函数名称进行封装.以便 通过函数名调用,实现一次编写,多次调用的目的.

        python语言中:封装函数尽量做到: 高内聚 低耦合 (只完成自己的 功能, 函数执行成功与失败,与别的内容无关)

自定义函数语法:

        def 函数名(形式参数列表):

                code # 函数体

                return value 

def add(a,b,c):# 执行三个数相加,并返回和sum=a+b+cprint(f'{a} {b} {c}三个数相加的和为:{sum}')return sum
add(10,20,30)

 f68a23e8983d43368125a5c6a8d70e61.png

9c0ed2c59740466dbe009b5a23580369.png

我们使用def来定义函数,然后就是一个空格和函数名称;
        Python执行def时,会创建一个函数对象,并绑定到函数名变量上。
参数列表
        圆括号内是形式参数列表,有多个参数则使用逗号隔开
        定义时的形式参数不需要声明类型,也不需要指定函数返回值类型
        调用时的实际参数必须与形参列表一一对应
return返回值
        如果函数体中包含return语句,则结束函数执行并返回值;
        如果函数体中不包含return语句,则返回None值。
调用函数之前,必须要先定义函数,即先调用def创建函数对象
        内置函数对象会自动创建
        标准库和第三方库函数,通过import导入模块时,会执行模块中的def语句

二、形参和实参 

形参和实参的要点:

  • 圆括号内是形式参数列表,有多个参数则使用逗号隔开
  • 定义时的形式参数不需要声明类型,也不需要指定函数返回值类型
  • 调用时的实际参数必须与形参列表一一对应
def add(a, b):  # a 和 b 是形参  return a + b  result = add(5, 3)  # 5 和 3 是实参  
print(result)  # 输出结果是 8

2.1、形参

  • 定义:形参是函数定义时声明的变量,它们用来接收调用函数时传入的值。形参在函数内部使用,作用域是函数内部。

  • 特点:

    • 形参在函数定义时定义,通常是在函数头部括号内。

    • 形参可以被视为占位符,用于代表将来的实际输入数据。

2.2、实参 

  • 定义:实参是调用函数时传入的实际值或变量。实参可以是字面量、变量、表达式、以及其他函数的返回值等。

  • 特点:

    • 实参是在函数调用时提供的,实际传递给函数的值。

    • 实参的类型和数量需要和形参匹配。 

三、函数的参数传递

3.1、位置参数

位置参数是最基本的参数传递方式,函数调用时参数的传递顺序必须与函数定义时的参数顺序一致

# 定义一个函数
def function(name,  age,  sex):  # 需要传递三个参数print(f"姓名: {name}, 年龄:{age}, 性别: {sex}")# 调用这个函数
function("懒洋洋", 5, "Man")#姓名: 懒洋洋, 年龄:5, 性别: Man

3.2、关键字参数

关键字参数允许在调用函数时使用参数名来传递参数,这样可以不必考虑参数的顺序

# 定义一个函数 info: 做一个自我介绍
def info(name, age, score):print(f"my name is {name}, age: {age}, score: {score}")# 使用关键字去调用info 函数
info(age=18, score=100, name="小白")#my name is 小白, age: 18, score: 100
info("小白",score=90, age=6) # my name is 小白, age: 6, score: 90

3.3、缺省参数

缺省参数允许在定义函数时为某些参数提供默认值。如果在调用函数时没有提供这些参数的值,则使用默认值

# 定义一个函数 info: 做一个自我介绍
def info(name="某某某", age=18, score=100):print(f"my name is {name}, age: {age}, score: {score}")# 调用info函数
info() # info函数在调用的时候没有给出参数,则name,age, score使用的是默认值
info("小白") # 小白给出的是位置参数name的内容, age,score使用的是默认值
info(age=5, score=20) # age, score是关键字参数, name是没有给出值得.# name使用的是默认值参数info("小黑", age=10) # name是位置参数,age是关键字参数,score:默认值
info(age=18,"小白",score=20) # error :一旦使用了关键字参数,后面的内容就能再是# 位置参数了。

3.4、不定长参数

不定长参数允许在调用函数时传递任意数量的位置参数和关键字参数。这种参数在函数定义时使用 *args 和 **kwargs

3.4.1、*args

不定长位置参数使用 *args 接收多个位置参数,参数以元组的形式传递 

def info(name, age, *hobby):  # hobby参数前面有一个*表示的是不定长参数。print(f"name:{name}, age: {age}")print(f"hobby : {hobby}")# hobby这个参数是一个元组print(f"{type(hobby)}")# 调用函数info  # 小白 与 5 是位置参数,会给到name,age
# "足球", "篮球", "保龄球" 属于不定长参数,打包成元组,给到 hobby这个变量
info("小白", 5, "足球", "篮球", "保龄球")
# name:小白, age: 5
# hobby : ('足球', '篮球', '保龄球')
# <class 'tuple'>
print("*"*20)
info("小黑",10, "唱", "跳", "舞", "吃", "喝")
# name:小黑, age: 10
# hobby : ('唱', '跳', '舞', '吃', '喝')
# <class 'tuple'>

3.4.2、 **kwargs

不定长关键字参数使用 **kwargs 接收多个关键字参数,参数以字典的形式传递 

def info(name, age, **parent):  # parent:不定长参数: 前面有**,会将键值对的# 形式的参数打包成字典print(f"name: {name}, age: {age}")print(f"parent: {parent}")print(f"parent: {type(parent)}")# 调用info函数
info("小白", 5, mother="母亲", father="父亲")
# name: 小白, age: 5
# parent: {'mother': '母亲', 'father': '父亲'}
# parent: <class 'dict'>

3.4.3、组合

def info(name, age, *hobby, **parent):print(f"name:{name}, age: {age}, hobby: {hobby}, parent:{parent}")print(f'{type(hobby)}')print(f'{type(parent)}')# 调用info函数
info("小白", 5, "唱","跳", "篮球", mother="母亲", father="父亲")
'''
name:小白, age: 5, hobby: ('唱', '跳', '篮球'), parent:{'mother': '母亲', 'father': '父亲'}
<class 'tuple'>
<class 'dict'>
'''# error,在* 与 **混用的时候,一旦使用了**传递键值对儿的时候,就不能再传递单个的参数了。
# info("小黑", 5, "唱", mother="母亲", father="父亲", "跳", "篮球")

四、函数的返回值

return返回值要点:

        如果函数体中包含return语句,则结束函数执行并返回值

        如果函数体中不包含return语句,则返回None

        要返回多个值,使用列表、元组、字典、集合将多个值“存起来”即可

        返回多个值,会将返回值的值打包成 一个元组。

定义一个函数,返回100 ~ 999之间的所有的水仙花数字。 水仙数数字有 4个:

def flower():# 定义一个列表,记录水仙花数字ls = []# 编写功能,找到这四个水仙花数字for number in range(100, 1000):g = number % 10s = (number // 10) % 10b = number // 100# 判断是不是水仙花数字if number == g**3 + s**3 + b**3:ls.append(number)# 出了循环以后,ls里面的内容就是4个水仙花数字a, b, c, d = ls[0], ls[1], ls[2], ls[3]return a, b, c, d# 接收函数的返回值
value1, value2, value3, value4 = flower()
print(f"{value1}, {value2}, {value3}, {value4}")#153, 370, 371, 407result = flower()
print(f"result : {result}")#result : (153, 370, 371, 407)

五、全局变量和局部变量

5.1、全局变量

  1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。

  2. 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。

  3. global关键字作用: 声明使用的变量属于全局变量

  4. global一般在函数的内部使用。

a = 100     #全局变量
def f1():global a  #如果要在函数内改变全局变量的值,增加global关键字声明print(a)  #打印全局变量a的值  a = 300   f1()#100
f1()#300
print(a)#300

5.2、局部变量

  1. 在函数体中(包含形式参数)声明的变量。

  2. 局部变量的引用比全局变量快,优先考虑使用

  3. 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量

a=100
def f1():a = 3   #同名的局部变量print(a)f1()#3
print(a)  #a仍然是100,没有变化

5.3、局部变量和全局变量效率测试 

        局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。

        在特别强调效率的地方或者循环次数较多的地方,可以通过将全局变量转为局部变量提高运行速度。

import time
a = 1000
def test01():start = time.time()global afor i in range(100000000):a += 1end = time.time()print("耗时{0}".format((end-start)))
def test02():c = 1000start = time.time()for i in range(100000000):c += 1end = time.time()print("耗时{0}".format((end-start)))
test01()#耗时6.526300430297852
test02()#耗时5.019754648208618
print(globals())

5.4、nonlocal和global关键字 

nonlocal  用来在内部函数中,声明外层的局部变量。

global  函数内声明全局变量,然后才使用全局变量

#测试nonlocal、global关键字的用法
a = 100
def outer():b = 10def inner():nonlocal b     #声明外部函数的局部变量print("inner b:",b)#inner b: 10b = 20global a      #声明全局变量a = 1000inner()print("outer b:",b)#outer b: 20
outer()
print("a:",a)#a: 1000

六、lambda表达式和匿名函数

  lambda表达式可以用来声明匿名函数。lambda函数是一种简单的、在同一行中定义函数的方法。lambda函数实际生成了一个函数对象。

  lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。

lambda表达式的基本语法如下:

        lambda arg1,arg2,arg3...  : <表达式> 

arg1 arg2 arg3为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果。 

七、嵌套函数 

嵌套函数:在函数内部定义的函数!

def outer():print('outer')def inner():print('inner')inner()outer()

inner()就是定义在outer()函数内部的函数。inner()的定义和调用都在outer()函数内部 

应用场景:

  1. 封装 - 数据隐藏

    外部无法访问“嵌套函数”。

  2. 贯彻 DRY(Don’t Repeat Yourself) 原则

  3. 嵌套函数,可以让我们在函数内部避免重复代码。

  4. 闭包

八、递归函数

  1. 递归(recursion)是一种常见的算法思路,在很多算法中都会用到。比如:深度优先搜索(DFS:Depth First Search)等。

  2. 递归的基本思想就是“自己调用自己”

递归函数指的是:自己调用自己的函数,在函数体内部直接或间接的自己调用自己。每个递归函数必须包含两个部分:

  1. 终止条件

    表示递归什么时候结束。一般用于返回值,不再调用自己。

  2. 递归步骤

    把第n步的值和第n-1步相关联。

⚠️递归函数由于会创建大量的函数对象、过量的消耗内存和运算能力。在处理大量数据时,谨慎使用。 

使用递归函数计算一个数字的阶乘:

n=5
def jiec(n):if n==1:return 1return n*jiec(n-1)
print(jiec(5))#120

九、eval()函数 

功能:将字符串str当成有效的表达式来求值并返回计算结果。

语法:eval(expression, globals=None, locals=None) 

参数:

  1. source:一个Python表达式或函数compile()返回的代码对象

  2. globals:可选。必须是dictionary

  3. locals:可选。任意映射对象

result = eval("2 + 3")  
print(result)  # 输出: 5x = 10  
result = eval("x * 2")  
print(result)  # 输出: 20result = eval("max(5, 10, 15) + min(1, 2, 3)")  
print(result)  # 输出: 16x = 1  
def my_func():  y = 2  # 使用eval执行局部变量  return eval("x + y", globals(), locals())  print(my_func())  # 输出: 3

⚠️⚠️⚠️eval函数会将字符串当做语句来执行,因此会被注入安全隐患。比如:字符串中含有删除文件的语句。那就麻烦大了。因此,使用时候,要慎重!!! 

  • 安全性:使用 eval() 可能存在安全风险,因为它会执行字符串中的任何 Python 代码。如果字符串来自不可信的来源(如用户输入),这可能导致代码注入风险。因此,在处理不安全的输入时,尽量避免使用 eval()

  • 性能eval() 的执行效率相对较低,因为它会运行解析和执行,极有可能在性能敏感的场合造成瓶颈。

  • 替代方案:对于简单的数学表达式,可以使用 ast.literal_eval(),它安全地求值字面量表达式,如字典、列表、元组等,不会执行其他代码。

import ast  str_expr = "[1, 2, 3, 4]"  
result = ast.literal_eval(str_expr)  # 安全地转换字符串为列表  
print(result)  # 输出: [1, 2, 3, 4]

十、LEGB规则

Local 指的就是函数或者类的方法内部

Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)

Global 指的是模块中的全局变量

Built in 指的是Python为自己保留的特殊名称

如果某个name映射在局部local命名空间中没有找到,接下来就会在闭包作用域enclosed进行搜索,如果闭包作用域也没有找到,Python就会到全局global命名空间中进行查找,最后会在内建built-in命名空间搜索 (如果一个名称在所有命名空间中都没有找到,就会产生一个NameError) 

#测试LEGB
s = "global"
def outer():s = "outer"def inner():s = "inner"print(s)inner()
outer()#inner

十一、学生管理系统(基于函数) 

# 完成学生管理系统# 1.创建一个班级信息: 班级使用列表这个容器进行表示
class_info = []# 2. 定义一个python菜单函数
def print_menu():print("****************************")print("** 1. 增加学生   2. 删除学生 **")print("** 3. 修改学生   4. 查询学生 **")print("** 5. 显示所有学生信息       **")print("** 6. 退出学生管理系统       **")print("****************************")# 定义一个增加学生信息的函数
def add_student():"""student 使用字典数据类型进行描述;{"name": name,"age" : age,"score" : score}"""# 声明使用的是全局变量global class_info# 从键盘中输入学生的信息name = input("please input student name : >> ")age = int(input("please input student age : >> "))score = int(input("please input student score : >>"))# 需要对学生的信息进行验证# 对名字进行重名认证,如果重复名字了,就不让在添加信息# class_info = [{"name":name, "age":age, "score":score}, {},{}]# 使用for循环进行遍历for info in class_info:# 如果class_info里面有数据,则info是学生的个人信息if info["name"] == name:print("您输入的学生已经存在,添加学生失败")return -1# 对年龄判断if 0 > age > 100:print("您输入的年龄有误,添加学生失败")return -2# 对成绩的判断if 0 > score > 100:print("您输入的成绩有误,添加学生失败")return -3# 通过输入的信息组建成一个字典student = {"name": name, "age": age, "score": score}# 将学生信息加入到列表当中class_info.append(student)print(f"添加学生{name}信息成功")return 0# 删除学生
def remove_student():""" 删除学生信息 """# 1.global声明全局变量 class_infoglobal class_info# 2.根据学生姓名删除学生信息name = input("please input remove student name : >>")# 3.根据学生的姓名找到需要删除的学生for student in class_info:if student["name"] == name:# 通过姓名找到了需要删除的学生""" python 语言中列表可以根据值删除 remove """ret = input(f"您确定要删除{name}的信息吗?如果确认请输入yes or y")if ret == "yes" or ret == "y":class_info.remove(student)print("删除成功")return 0else:print("您的输入有误")return -1# for 循环结束, 代表了没有找到需要删除的学生print("您输入的学生不存在")return -2# 修改学生信息函数
def modify_student():""" 修改学生信息 """# 声明使用全局变量global class_info# 通过学生的学号对学生的信息进行修改: 列表将其下标当做学号number = int(input("please input student number >>"))# 判断学号是否正确if len(class_info) <= number < 0:print("您输入的学号有误")return -1# 根据学号修改相应的信息class_info[number]["name"] = input("请输入修改之后的学生姓名: ")class_info[number]["age"] = int(input("请输入修改之后的学生年龄 :"))class_info[number]["score"] = int(input("请输入修改之后的学生成绩 :"))print("修改学生成功")return 0# 定义一个查找学生的函数
def find_student():# 声明使用的变量是全局变量global class_info# 通过姓名查找学生的信息name = input("please input student name : >>")for info in class_info:if info["name"] == name:print(f"姓名: {info['name']}, age: {info['age']}, score:{info['score']}")return 0print("您输入的学生不存在")return -1# 显示所有的学生信息
def show_student():# 声明使用的是全局变量global class_infofor info in class_info:print(f"姓名: {info['name']}, age: {info['age']}, score:{info['score']}")def main():""" 学生管理系统主程序 """# 死循环管理学生系统while True:# 打印学生管理系统菜单print_menu()# 给出提示信息,让用户选择自己的操作choose = int(input("please input your choose"))match choose:case 1:add_student()case 2:remove_student()case 3:modify_student()case 4:find_student()case 5:show_student()case 6:print("bye~")breakcase _:print("您的输入有误,请重新输入")pass# 调用main函数执行程序
main()

十二、思维导图

相关文章:

Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)

一、函数基础 1.1、函数的用法和底层分析 函数是可重用的程序代码块。 函数的作用&#xff0c;不仅可以实现代码的复用&#xff0c;更能实现代码的一致性。一致性指的是&#xff0c;只要修改函数的代码&#xff0c;则所有调用该函数的地方都能得到体现。 在编写函数时&#xf…...

excel 整理表格,分割一列变成多列数据

数据准备 对于很多系统页面的数据是没有办法下载的。 这里用表格数据来举例。随便做数据的准备。想要看excel部分的可以把这里跳过&#xff0c;从数据准备完成开始看。 需要一点前端基础知识&#xff0c;但不多&#xff08;不会也行&#xff09;。 把鼠标放在你想要拿到本地的…...

Oracle 分区索引简介

目录 一. 什么是分区索引二. 分区索引的种类2.1 局部分区索引&#xff08;Local Partitioned Index&#xff09;2.2 全局分区索引&#xff08;Global Partitioned Index&#xff09; 三. 分区索引的创建四. 分区索引查看4.1 USER_IND_COLUMNS 表4.2 USER_INDEXES 表 五. 分区索…...

C++实现设计模式--- 观察者模式 (Observer)

观察者模式 (Observer) 观察者模式 是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生改变时&#xff0c;其依赖者&#xff08;观察者&#xff09;会收到通知并自动更新。 意图 定义对象之间的一对多依赖关系。当一个对象状…...

CentOS 6.8 安装 Nginx

个人博客地址&#xff1a;CentOS 6.8 安装 Nginx | 一张假钞的真实世界 提前安装&#xff1a; # sudo yum install yum-utils 一般情况下这个工具系统已经安装。 创建文件/etc/yum.repos.d/nginx.repo&#xff0c;输入内容如下&#xff1a; [nginx-stable] namenginx stab…...

px、em 和 rem 的区别:深入理解 CSS 中的单位

文章目录 前言一、px - 像素 (Pixel)二、em - 相对父元素字体大小 (Ems)三、rem - 相对于根元素字体大小 (Root Ems)四、综合比较结语 前言 在CSS中&#xff0c;px、em和rem是三种用于定义尺寸&#xff08;如宽度、高度、边距、填充等&#xff09;的长度单位。它们各自有不同的…...

vue 表格内点编辑,单元格不切换成输入框问题分析

vue 表格渲染时&#xff0c;我点击编辑时&#xff0c;想直接在单元格上面进行编辑。 效果如下&#xff0c;正常是文本效果&#xff0c;点击编辑时&#xff0c;出现输入框 其实实现起来&#xff0c;逻辑很简单&#xff0c;但是中间我却出现了一个问题&#xff0c;效果始终出不…...

MATLAB学习笔记-table

1.在table中叠加table table 的每一列具有固定的数据类型。如果要让表的所有单元格都可以任意填充&#xff0c;就得让每一列都是 cell 类型&#xff0c;这样表中每个单元格都是“一个元胞”。创建时可以先构造一个 空 cell 数组&#xff08;大小为行数列数&#xff09;&#x…...

使用 selenium-webdriver 开发 Web 自动 UI 测试程序

优缺点 优点 有时候有可能一个改动导致其他的地方的功能失去效果&#xff0c;这样使用 Web 自动 UI 测试程序可以快速的检查并定位问题&#xff0c;节省大量的人工验证时间 缺点 增加了维护成本&#xff0c;如果功能更新过快或者技术更新过快&#xff0c;维护成本也会随之提高…...

ffmpeg硬件编码

使用FFmpeg进行硬件编码可以显著提高视频编码的性能&#xff0c;尤其是在处理高分辨率视频时。硬件编码利用GPU或其他专用硬件&#xff08;如Intel QSV、NVIDIA NVENC、AMD AMF等&#xff09;来加速编码过程。以下是使用FFmpeg进行硬件编码的详细说明和示例代码。 1. 硬件编码支…...

脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)

文章目录 前言一、什么是脚本化安装二、使用步骤1.物理磁盘脚本挂载&#xff08;离线&#xff09;2.yum脚本化安装&#xff08;离线&#xff09;3.nfs脚本化安装&#xff08;离线&#xff09;4.pg数据库脚本化安装&#xff08;离线&#xff09;5.nginx脚本化安装&#xff08;离…...

// Error: line 1: XGen: Candidate guides have not been associated!

Maya xgen 报错// Error: line 1: XGen: Candidate guides have not been associated! 复制下面粘贴到Maya脚本管理器python运行&#xff1a; import maya.cmds as cmds def connect_xgen_guides():guide_nodes cmds.ls(typexgmMakeGuide)for node in guide_nodes:downstream…...

投机解码论文阅读:Falcon

题目&#xff1a;Falcon: Faster and Parallel Inference of Large Language Models through Enhanced Semi-Autoregressive Drafting and Custom-Designed Decoding Tree 地址&#xff1a;https://arxiv.org/pdf/2412.12639 一看它的架构图&#xff0c;可以发现它是基于EAGLE…...

OpenCV实现基于交叉双边滤波的红外可见光融合算法

1 算法原理 CBF是*Cross Bilateral Filter(交叉双边滤波)*的缩写&#xff0c;论文《IMAGE FUSION BASED ON PIXEL SIGNIFICANCE USING CROSS BILATERAL FILTER》。 论文中&#xff0c;作者使用交叉双边滤波算法对原始图像 A A A&#xff0c; B B B 进行处理得到细节&#xff0…...

Springboot整合WebService

1.1 概述 webservice 即 web 服务&#xff0c;因互联网而产生&#xff0c;通过 webservice 这种 web 服务&#xff0c;我们可以实现互联网应 用之间的资源共享&#xff0c;比如我们想知道 手机号码归属地&#xff0c;列车时刻表&#xff0c;天气预报&#xff0c;省市区邮…...

504 Gateway Timeout:网关超时解决方法

一、什么是 504Gateway Timeout&#xff1f; 1. 错误定义 504 Gateway Timeout 是 HTTP 状态码的一种&#xff0c;表示网关或代理服务器在等待上游服务器响应时超时。通俗来说&#xff0c;这是服务器之间“对话失败”导致的。 2. 常见触发场景 Nginx 超时&#xff1a;反向代…...

C++ 的 pair 和 tuple

1 std::pair 1.1 C 98 的 std::pair 1.1.1 std::pair 的构造 ​ C 的二元组 std::pair<> 在 C 98 标准中就存在了&#xff0c;其定义如下&#xff1a; template<class T1, class T2> struct pair;std::pair<> 是个类模板&#xff0c;它有两个成员&#x…...

抢十八游戏

前言 我国民国一直流传着一个名叫“抢十八”的抢数游戏&#xff1a;参与游戏的两人从1开始轮流报数&#xff0c;每次至少报1个数&#xff0c;最多报2个数&#xff0c;每人报的每个数不得与自已报过的或对方报过的重复&#xff0c;也不得跳过任何一个数。谁先报到18&#xff0c…...

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》&#xff0c;让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识&#xff0c;顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话&#xff0c;可以看看博主的C语言专栏哟&#xff…...

LLM实现视频切片合成 前沿知识调研

1.相关产品 产品链接腾讯智影https://zenvideo.qq.com/可灵https://klingai.kuaishou.com/即梦https://jimeng.jianying.com/ai-tool/home/Runwayhttps://aitools.dedao.cn/ai/runwayml-com/Descripthttps://www.descript.com/?utm_sourceai-bot.cn/Opus Cliphttps://www.opu…...

学习threejs,使用FlyControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.FlyControls 相机控制…...

wordpress 房产网站筛选功能

自定义分类法创建 add_action( init, ashu_post_type ); function ashu_post_type() {register_taxonomy(province,post,array(label => 省,rewrite => array( slug => province ),hierarchical => true));register_taxonomy(city,post,array(label => 市,rewr…...

SQL面试题2:留存率问题

引言 场景介绍&#xff1a; 在互联网产品运营中&#xff0c;用户注册量和留存率是衡量产品吸引力和用户粘性的关键指标&#xff0c;直接影响产品的可持续发展和商业价值。通过分析这些数据&#xff0c;企业可以了解用户行为&#xff0c;优化产品策略&#xff0c;提升用户体验…...

Redis是单线程还是多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis是单线程还是多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis是单线程还是多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis是 单线程 的。 尽管Redis的处理是单线程的&a…...

mysql 变量,流程控制与游标

第16章_变量,流程控制与游标 1.变量 分为系统变量和用户自定义变量 1.1系统变量 1.1.1系统变量分类 系统变量分为全局系统变量以及会话系统变量 查看所有全局变量 SHOW GLOBAL VARIABLES 查看所有会话变量 SHOW SESSION VARIABLESor SHOW VARIABLES #默认是会话变量 …...

Java配置log4j日志打印

1. 引入依赖 <dependencies><!-- Log4j 2依赖 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>1.2.14</version> <!-- 可以根据需要修改版本 --></…...

什么是SQL?

什么是SQL&#xff1f; SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于与关系型数据库进行交互的标准编程语言。SQL 是设计用于管理和操作关系型数据库的语言&#xff0c;主要用于查询、插入、更新、删除和定义数据结构。SQL 是关…...

Linux 机器学习

Linux 机器学习是指在 Linux 操作系统环境下进行机器学习相关的开发、训练和应用。 具体步骤 环境搭建&#xff1a; 选择合适的 Linux 发行版&#xff1a;如 Ubuntu、Fedora、Arch Linux 等。Ubuntu 因其易用性和丰富的软件包管理系统&#xff0c;适合初学者&#xff1b;Fed…...

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载 效果展示 使用方法 import LoadingText from "../components/LoadingText" import PageToRefresh from "../components/PageToRefresh" import FooterBar from "../components/…...

第27章 汇编语言--- 设备驱动开发基础

汇编语言是低级编程语言的一种&#xff0c;它与特定的计算机架构紧密相关。在设备驱动开发中&#xff0c;汇编语言有时用于编写性能关键的部分或直接操作硬件&#xff0c;因为它是接近机器语言的代码&#xff0c;可以提供对硬件寄存器和指令集的直接访问。 要展开源代码详细叙…...

sosadmin相关命令

sosadmin命令 以下是本人翻译的官方文档&#xff0c;如有不对&#xff0c;还请指出&#xff0c;引用请标明出处。 原本有个对应表可以跳转的&#xff0c;但是CSDN的这个[](#)跳转好像不太一样&#xff0c;必须得用html标签&#xff0c;就懒得改了。 sosadmin help 用法 sosadm…...

【git】-初始git

学习资源推荐- 标签管理 - Git教程 - 廖雪峰的官方网站 一、什么是版本控制&#xff1f; 二、Git的安装 三、掌握Linux常用命令 四、Git基本操作 1、提交代码 2、查看历史提交 3、版本回退 一、什么是版本控制&#xff1f; 版本控制是一种用于记录文件或项目内容变化的系…...

JAVA之单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。在软件设计中&#xff0c;单例模式常用于控制对资源的访问&#xff0c;例如数据库连接、线程池等。以下是单例模式的详…...

无人机数据集,支持YOLO,COCO json,PASICAL VOC xml格式的标注,正确识别率可达到95.7%,10000张原始图片

无人机数据集&#xff0c;支持YOLO&#xff0c;COCO json&#xff0c;PASICAL VOC xml格式的标注&#xff0c;正确识别率可达到95.7%&#xff0c;10000张原始图片 下载地址&#xff1a; 标注好的数据集下载地址&#xff1a; yolo v11: https://download.csdn.net/download/p…...

Linux:进程概念(三.详解进程:进程状态、优先级、进程切换与调度)

目录 1. Linux中的进程状态 1.1 前台进程和后台进程 运行状态 睡眠状态 磁盘休眠状态 停止状态 kill指令—向进程发送信号 死亡状态 2. 僵尸进程 2.1 僵尸状态 2.2 僵尸进程 2.3 僵尸进程危害 3. 孤儿进程 4. 进程的优先级 概念 查看进程优先级 PRI&#xff08…...

stack和queue专题

文章目录 stack最小栈题目解析代码 栈的压入弹出序列题目解析代码 queue二叉树的层序遍历题目解析代码 stack stack和queue都是空间适配器 最小栈 最小栈的题目链接 题目解析 minst是空就进栈&#xff0c;或者是val < minst.top()就进栈 代码 class MinStack { public:M…...

一 rk3568 Android 11固件开发环境搭建 (docker)

一 目标 搭建 rk3568 android 系统内核 及固件开发编译调试环境, 支持开发环境导出分享 基于荣品 rk3568 核心板 系统环境: ubuntu22.04 /ubuntu20.04 64位桌面版 编译环境: docker + ubuntu20.04 , 独立的容器隔离环境,不受系统库版本冲突等影响,无性能损耗, 可…...

2025年华数杯国际赛B题论文首发+代码开源 数据分享+代码运行教学

176项指标数据库 任意组合 千种组合方式 14页纯图 无水印可视化 63页无附录正文 3万字 1、为了方便大家阅读&#xff0c;全文使用中文进行描述&#xff0c;最终版本需自行翻译为英文。 2、文中图形、结论文字描述均为ai写作&#xff0c;可自行将自己的结果发给ai&#xff0c…...

三小时深度学习PyTorch

【对新手非常友好】三小时深度学习PyTorch快速入门&#xff01;包教会你的&#xff01; --人工智能/深度学习/pytorch_哔哩哔哩_bilibili从头开始&#xff0c;把概率论、统计、信息论中零散的知识统一起来_哔哩哔哩_bilibili从编解码和词嵌入开始&#xff0c;一步一步理解Trans…...

朴素贝叶斯分类器

一、生成模型&#xff08;学习&#xff09;&#xff08;Generative Model&#xff09; vs 判别模型&#xff08;学习&#xff09;&#xff08;Discriminative Model&#xff09; 结论&#xff1a;贝叶斯分类器是生成模型 1、官方说明 生成模型对联合概率 p(x, y)建模&#x…...

商用车电子电气零部件电磁兼容条件和试验(2)—术语和定义

写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求&#xff0c;高压试验项目内容及要求。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 目录 商用车电子电气…...

SimpleFOC01|基于STM32F103+CubeMX,移植核心的common代码

导言 如上图所示&#xff0c;进入SimpleFOC官网&#xff0c;点击Github下载源代码。 如上图所示&#xff0c;找到仓库。 comom代码的移植后&#xff0c;simpleFOC的移植算是完成一大半。simpleFOC源码分为如下5个部分&#xff0c;其中communication是跟simpleFOC上位机通讯&a…...

物联网之传感器技术

引言 在数字化浪潮席卷全球的今天&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动各行各业变革的重要力量。而物联网传感器&#xff0c;作为物联网感知层的核心技术&#xff0c;更是扮演着不可或缺的角色。它们如同人类的五官&#xff0c;能够感知物理世界中的各种信…...

React:构建用户界面的JavaScript库

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

基于TypeScript封装 `axios` 请求工具详解

TypeScript 项目中&#xff0c;封装一个详细的 axios 请求工具可以提高代码的可维护性、可重用性&#xff0c;并让请求逻辑与业务逻辑分离。以下是一个详细的封装示例&#xff0c;包括请求拦截器、响应拦截器、错误处理、以及类型定义。 1. 安装 Axios 首先&#xff0c;确保你…...

ElasticSearch在Windows环境搭建测试

引子 也持续关注大数据相关内容一段时间&#xff0c;大数据内容很多。想了下还是从目前项目需求侧出发&#xff0c;进行相关学习。Elasticsearch&#xff08;ES&#xff09;是位于 Elastic Stack&#xff08;ELK stack&#xff09; 核心的分布式搜索和分析引擎。Logstash 和 B…...

通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型 OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI&#xff09;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型&#xff0c;为开放式互连信息系统提供了一种功能结构的框架。 它从低到高分别是…...

高级运维:shell练习2

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 vim check.sh #!/bin/bash# 定义网络前缀 network_prefix"192.168.1"# 循环遍历1-254的IP for i in {1..254}; do# 构造完整的IP地址ip"$network_…...

三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标

导言 通过坐标系旋转&#xff0c;将电机中复杂的三相交流信号映射到与转子磁场同步的旋转参考系中&#xff0c;将动态问题转化为静态问题。这种方法的优点在于&#xff1a; 简化了控制逻辑。实现了转矩Iq和磁通Id的解耦。提供了直流量控制的可能性&#xff0c;大大提高了控制效…...

SAP FICO资产模块各元素基本关系总结

文章目录 【SAP系统研究】 #SAP #FICO #资产会计 ①&#xff1a;每个折旧表包含多个折旧范围&#xff0c;折旧范围用于设置资产的平行折旧&#xff0c;如不同的折旧范围可以更新不同的总账&#xff0c;更新不同的科目等。 ②&#xff1a;折旧表是要分配给公司代码的&#xff…...