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

深入浅出一下Python函数的核心概念与进阶应用

本篇技术博文摘要 🌟

  • 本文系统梳理了Python函数的核心知识点,从基础概念到高级特性,构建了完整的函数编程知识体系。内容涵盖:变量作用域的局部与全局划分、函数注释的规范写法、参数传递中值与引用的区别、匿名函数的灵活应用,以及Python 3.8的新特性(如海象运算符)。进一步深入偏函数嵌套函数闭包的实现,详解装饰器的语法与进阶用法(参数传递、多装饰器顺序、返回值处理)。最后结合高阶函数(mapfilterreduce)实现数据批量操作,并通过综合实验——工资计算系统,串联知识点,实践员工信息管理与月薪计算逻辑。

引言 📘

  • 在这个变幻莫测、快速发展的技术时代,与时俱进是每个IT工程师的必修课。
  • 我是盛透侧视攻城狮,一名什么都会一丢丢的网络安全工程师,也是众多技术社区的活跃成员以及多家大厂官方认可人员,希望能够与各位在此共同成长。

 上节回顾

目录

本篇技术博文摘要 🌟

引言 📘

 上节回顾

01-函数中变量的作用域

 02-函数注释

03-值传递引用传递

04-Py函数以及匿名函数

05-python3.8新特性

06-偏函数 

​07-函数的嵌套

08-闭包

 09-装饰器

10-装饰器参数

11-一个函数被多个装饰器装饰

12-装饰器函数返回值问题

13-高阶函数map.py

14-filter函数 

15-reduce函数

综合实验:设计一个工资计算系统,录入员工信息,计算员工的月薪

欢迎各位彦祖与热巴畅游本人专栏与技术博客

你的三连是我最大的动力

点击➡️指向的专栏名即可闪现


01-函数中变量的作用域

  • 原理:Python变量作用域分为局部作用域(函数内部)和全局作用域(函数外部)。
  • 作用:理解变量可见性和生命周期
a = 100def test_01():a = 10b = 20print(a)print(b)def test_02():print(a)def test_03():global aa += 100print(a)test_03()
# test_02()
# test_01()
# print(b)'''
全局变量:声明在函数外部的变量称为全局变量'''
  •   函数内部可以使用全局变量,但是不能修改,如果一定要在函数内部修改全局变量,那么global 

 

 02-函数注释

  • 原理:使用文档字符串("""...""")和类型注解(Python 3.5+)为函数添加说明。
  • 作用:提高代码可读性,IDE可识别提示
def add(a: int, b: int) -> int:"""返回两个整数的和"""return a + b
print(add.__doc__)  # 输出:返回两个整数的和

 

03-值传递引用传递

  • 原理
    • 值传递:在传递参数的时候,仅仅是将自己的值拷贝了一份,传递给了函数的参数,变量不会改变
    • 引用传递:在传递参数时,传地址,函数形参获取的值也是同一块内存
  • 作用:理解参数修改对原数据的影响
def test_01(x, y):x += 10y += 100print(x)print(y)a = 10
b = 20
test_01(a, b)
print(a)
print(b)def test_02(nums):print(id(nums))nums.append(10)nums.append(100)print(nums)list1 = [1, 2, 3]
print(id(list1))
test_02(list1)
print(list1)

 

04-Py函数以及匿名函数

  • 原理
    • lambda [arg1,arg2……]: 代码块(函数体)
    • 存在函数作为参数传递给函数,并且又不想让外界访问,而且参数函数足够简单,即可以定义为匿名函数(lambda表达式)

  • 作用:简化代码,常用于高阶函数参数
def now():print("1111111111")f = now
a = f
# __name__,拿到函数的名字
print(f.__name__)
print(a.__name__)

 

def test_func(add):result = add(1, 2)print(result)def compute(a,b):return a+btest_func(compute)test_func(lambda a, b: a + b)

 

  • function(){}
  • 在python中,将一个函数作为参数传到另一个函数中去
  • 函数的参数数据类型:只要是一个对象就可以
  • 函数本身就是一个对象

05-python3.8新特性

  • 原理:Python 3.8引入海象运算符(:=)、位置参数限定符(/)等。
  • 作用:提升代码简洁性和灵活性
# 海象运算符
if (n := len([1,2,3])) > 2:print(f"长度是{n}")  # 输出:长度是3# 位置参数
def func(a, b, /, c):print(a, b, c)
func(1, 2, c=3)  # 正确
func(a=1, b=2, c=3)  # 报错:a,b必须位置参数

# 声明函数参数类型
# def 函数名(a,b)def add(x: int, y: int) -> int:return x + yprint(add(1, 2))
print(add("a", "b"))

 

06-偏函数 

  • 原理:使用 functools.partial 固定函数的部分参数,生成新函数。
  • 作用:简化参数传递。
from functools import partial
def power(base, exp):return base ** expsquare = partial(power, exp=2)
print(square(5))  # 输出25

# functools模块提供很多方法,其中有一个就是偏函数# int(3.14)# def int2(x, base=2):
#     return int(x, base)
#
# print(int2("10010",10))import functoolsint2 = functools.partial(int, base=2)print(int2("100101"))

07-函数的嵌套

  •  原理:在函数内部定义另一个函数。
  • 作用:封装逻辑,限制函数作用域。
def outer():def inner():print("内部函数")inner()outer()  # 输出:内部函数

 

def fun1():b = 20def fun2():   #fun2=def(){}print(b)return fun2a = fun1()
a()
a()
a()

  •  综上所述:
    • 1、函数可以作为返回值进行返回
    • 2、函数可以作为参数进行传进
    • 3、函数名本质上是一个变量名,指向函数的内存地址

 

08-闭包

  • 原理:一个函数嵌套一个函数,内层函数用到外层函数的局部变量,内层函数就被称为闭包
  • 作用:保留状态,实现数据隐藏。
def counter():count = 0def increment():nonlocal countcount += 1return countreturn incrementc = counter()
print(c(), c())  # 输出1, 2

def outer():a = 1def inner():#内层函数如果要改变外层函数局部变量的值,需要使用nonlocal关键字赋予权限nonlocal aa += 1inner()print(a)return innerouter()# 可以让一个变量常驻在内存当中
# 可以避免全局变量被修改

 09-装饰器

  • 原理:装饰器本质上是一个闭包,作用是不改变原有函数的前提下,为函数添加新的功能,但是源代码不改变
  • 雏形:
    def wrapper(目标函数):def inner():之前添加的功能目标函数()之后添加的功能return inner

  • 作用:无侵入式增强功能(如用户登录、日志、计时)

10-装饰器参数

  • 原理:装饰器本身支持参数传递。
  • 作用:动态配置装饰器行为。
def guanjia(fn):# 定义一个名为guanjia的装饰器函数,它接受一个函数作为参数print("这波传入的函数是", fn.__name__)# 打印传入函数的名称,方便调试和理解装饰器的工作过程def inner(*args, **kwargs):# 定义一个内部函数inner,它使用了可变参数*args和**kwargs# *args用于接收任意数量的位置参数,**kwargs用于接收任意数量的关键字参数print("开挂")# 在调用被装饰的函数之前,打印“开挂”信息fn(*args, **kwargs)# 调用被装饰的函数,并将接收到的参数传递给它print("关闭外挂")# 在调用被装饰的函数之后,打印“关闭外挂”信息return inner# 返回内部函数inner,这样当使用@guanjia语法时,实际上是将被装饰的函数替换为inner函数@guanjia  # play_wz = guanjia(play_wz)
# 使用@guanjia语法将guanjia装饰器应用到play_wz函数上
# 这相当于执行了play_wz = guanjia(play_wz),将play_wz函数替换为guanjia返回的inner函数
def play_wz(uname, password):# 定义一个名为play_wz的函数,它接受两个参数:用户名和密码print("来和妲己玩耍吧")# 打印游戏相关的提示信息print(f"用户名{uname},密码是{password}")# 打印用户名和密码信息@guanjia
# 使用@guanjia语法将guanjia装饰器应用到play_dnf函数上
def play_dnf(uname, pwd, g):# 定义一个名为play_dnf的函数,它接受三个参数:用户名、密码和技能print("你好啊,我是赛利亚,今天又是美好的一天")# 打印游戏相关的提示信息print(f"用户名{uname},密码是{pwd},技能是{g}")# 打印用户名、密码和技能信息play_wz("zhangsan", "123456")
# 调用被装饰后的play_wz函数,传入用户名和密码
# 实际执行的是inner函数,会先打印“开挂”,然后调用原始的play_wz函数,最后打印“关闭外挂”play_dnf("lisi", "lisisi", "吹")
# 调用被装饰后的play_dnf函数,传入用户名、密码和技能
# 同样会先打印“开挂”,然后调用原始的play_dnf函数,最后打印“关闭外挂”

 

  • 装饰器guanjia 是一个装饰器函数,它可以在不修改原函数代码的情况下,为原函数添加额外的功能(如打印 “开挂” 和 “关闭外挂” 信息)。
  • 可变参数inner 函数使用了 *args 和 **kwargs 可变参数,这样可以处理任意数量和类型的参数,使得装饰器可以应用到不同参数的函数上。
  • 函数调用:调用被装饰后的函数时,实际上是调用了 inner 函数,inner 函数会在调用原函数前后执行额外的操作。

11-一个函数被多个装饰器装饰

  • 原理:装饰器按从下到上的顺序执行
# 定义装饰器函数 wrapper1,它接收一个函数作为参数
def wrapper1(fn):# 定义内部函数 inner,用于包装被装饰的函数def inner(*args, **kwargs):# 在调用被装饰函数之前,打印特定信息print("11111111111111111")# 调用被装饰的函数,并传入参数fn(*args, **kwargs)# 在调用被装饰函数之后,打印特定信息print("111111111111111111")# 返回内部函数 innerreturn inner# 定义装饰器函数 wrapper2,它接收一个函数作为参数
def wrapper2(fn):# 定义内部函数 inner,用于包装被装饰的函数def inner(*args, **kwargs):# 在调用被装饰函数之前,打印特定信息print("2222222222222222")# 调用被装饰的函数,并传入参数fn(*args, **kwargs)# 在调用被装饰函数之后,打印特定信息print("222222222222222222")# 返回内部函数 innerreturn inner# 使用 wrapper1 装饰 wrapper2 装饰后的 target 函数
# 首先执行 @wrapper2,将 target 函数替换为 wrapper2.inner
# 然后执行 @wrapper1,将 wrapper2.inner 作为参数传入 wrapper1,得到 wrapper1.inner
@wrapper1  
@wrapper2  
# 定义目标函数 target
def target():# 打印函数内的信息print("我是函数")# 调用被装饰后的 target 函数,实际上调用的是 wrapper1.inner
target()# 以下是使用 time 模块的代码
# 导入 time 模块,该模块提供了各种与时间相关的函数
import time
# 打印当前的时间戳,即从 1970 年 1 月 1 日午夜(UTC)开始到现在的秒数
print(time.time())
# 让程序暂停执行 2 秒
time.sleep(2)

 

 

12-装饰器函数返回值问题

  • 装饰器 guanjia:在调用被装饰的函数前后分别打印提示信息,并返回被装饰函数的返回值
# 定义一个名为guanjia的装饰器函数,它接收一个函数作为参数
def guanjia(fn):# 定义内部函数inner,用于包裹被装饰的函数def inner(*args, **kwargs):# 在调用被装饰函数前打印提示信息print("11111111111111111")# 调用被装饰的函数,并将其返回值赋给变量retret = fn(*args, **kwargs)# 在调用被装饰函数后打印提示信息print("111111111111111111")# 返回被装饰函数的返回值return ret# 返回内部函数innerreturn inner# 定义一个名为rizhi的装饰器函数,它接收一个函数作为参数
def rizhi(fn):# 定义内部函数inner,用于包裹被装饰的函数def inner(*args, **kwargs):# 在调用被装饰函数前打印日志信息print("玩了一次游戏")# 调用被装饰的函数fn(*args, **kwargs)# 返回内部函数innerreturn inner# 使用guanjia装饰器装饰play_wz函数
# 相当于执行了play_wz = guanjia(play_wz)
@guanjia
# 定义一个名为play_wz的函数,接收用户名和密码作为参数
def play_wz(uname, password):# 打印用户名和密码信息print(f"用户名是{uname},密码是{password}")# 打印游戏相关提示信息print("来和妲己玩耍吧")# 返回游戏相关的字符串return "妲己玩的很666"# 调用被装饰后的play_wz函数,并将返回值赋给变量a
a = play_wz('gouxin', 123456)
# 打印变量a的值
print(a)# 使用rizhi装饰器装饰yonghu函数
# 相当于执行了yonghu = rizhi(yonghu)
@rizhi
# 定义一个名为yonghu的函数,接收名字和密码作为参数
def yonghu(name, pwd):# 打印名字和密码信息print(f"名字为{name},密码是{pwd}")# 打印相关提示信息print("ljs帅到飞起")# 返回一个字符串return "蔡志恒我直接爱思了"# 调用被装饰后的yonghu函数,并将返回值赋给变量b
b = yonghu('caizhiheng', 6666)
# 打印变量b的值
print(b)

 

13-高阶函数map.py

  • 原理:从可迭代对象中获取第一个元素,作为函数的参数,传入函数中,将函数执行后返回结果作为生成对象中的第一个元素,最终返回一个可迭代对象
  • 语法:
  •  map(将来可以调用的,可迭代数据)

 

# map()
a = map(lambda x: x * x, [1, 2, 3])  # [1,4,9]
print(list(a))
for i in a:print(i)# map(将来可以调用的,可迭代数据)''''''# b = map(lambda x,y:x+y,[1,2,3],[4,5,6])
# for i in b:
#     print(i)def f1(x, y):return x, yl1 = [0, 1, 2, 3, 4, 5, 6]
l2 = ['sun', 'm', 't', 'w', 't', 'f', 's']l3 = map(f1, l1, l2)
print(list(l3))

  •  第一个 map 示例:使用 lambda 函数对列表 [1, 2, 3] 中的元素进行平方操作,将 map 返回的迭代器转换为列表打印后,迭代器变空,后续遍历无输出。
  • 注释掉的 map 示例:展示了 map 处理两个可迭代对象的情况,使用 lambda 函数对两个列表对应位置元素相加。
  • 自定义函数 f1 与 map:定义函数 f1 接受两个参数并返回元组,使用 map 将 f1 应用到 l1 和 l2 对应元素上,最后将结果迭代器转换为列表打印。

14-filter函数 

  • 原理:filter(func, iterable) 过滤满足条件的元素,返回迭代器。
# filter()   过滤对指定的序列执行过滤a = filter(lambda x: x % 2, [1, 2, 3, 4])
print(list(a))
# 只要成立(为真:0为假,其余数字为真),就保留

 

15-reduce函数

  • 原理:用上一次计算的结果作为下一次传入的x值,如果上一次没有计算结果,则将可迭代数据的强两个元素分别作为x,y传入,如果有额外数据,会作为第一次传入的x值
from functools import reducea = reduce(lambda x, y: x + y, [1, 2, 7, 4],5)
print(a)

 

综合实验:设计一个工资计算系统,录入员工信息,计算员工的月薪

# 设计一个工资计算系统,录入员工信息,计算员工的月薪
from abc import ABCMeta, abstractmethodclass Employee(metaclass=ABCMeta):  # 抽象类不能实例化,但是子类可以继承# 继承抽象类def __init__(self, name):self.name = name# 将这个方法变成抽象方法,对象不能直接调用,但是子类可以重写这个方法@abstractmethoddef give_salary(self):passclass Magnaer(Employee):# 创建一个部门经理类,部门经理每月固定月薪666666666666666.00元def give_salary(self):return 666666666666666.00class Programmer(Employee):# 创建一个程序员类,添加一个工作时间属性为 程序员计时支付月薪,每小时2元# super().__init__() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法。def __init__(self, name, work_hour=0):super(Programmer, self).__init__(name)self.work_hour = work_hourdef give_salary(self):return self.work_hour * 2class SalesMan(Employee):# 创建一个销售员类,添加一个销售员按照1元底薪加上销售额5%的提成支付月薪的销售属性def __init__(self, name, sales=0):super(SalesMan, self).__init__(name)self.sales = salesdef give_salary(self):return self.sales * 0.05 + 1if __name__ == '__main__':Salary = [Magnaer('任正非'), Programmer('马化腾'), Programmer('雷军'), Programmer('埃隆·马斯克'), SalesMan('马云'),SalesMan('蒂姆库克')]for i in Salary:if isinstance(i, Programmer):i.work_hour = float(input(f'请输入{i.name}工作时长:'))elif isinstance(i, SalesMan):i.sales = float(input(f'请输入{i.name}的销售额:'))print(f'{i.name}的本月月薪为¥{i.give_salary()} ')

欢迎各位彦祖与热巴畅游本人专栏与技术博客

你的三连是我最大的动力

点击➡️指向的专栏名即可闪现

➡️渗透终极之红队攻击行动 

➡️动画可视化数据结构与算法

➡️ 永恒之心蓝队联纵合横防御

➡️华为高级网络工程师

➡️华为高级防火墙防御集成部署

 ➡️ 未授权访问漏洞横向渗透利用

 ➡️逆向软件破解工程

➡️MYSQL REDIS 进阶实操

➡️红帽高级工程师

➡️红帽系统管理员

 ➡️HVV 全国各地面试题汇总

 

相关文章:

深入浅出一下Python函数的核心概念与进阶应用

本篇技术博文摘要 🌟 本文系统梳理了Python函数的核心知识点,从基础概念到高级特性,构建了完整的函数编程知识体系。内容涵盖:变量作用域的局部与全局划分、函数注释的规范写法、参数传递中值与引用的区别、匿名函数的灵活应用&am…...

【漫话机器学习系列】198.异常值(Outlier)

异常值(Outlier)全面指南 —— 检测、分析与处理 作者:Chris Albon(图源) 场景:数据清洗与特征工程必备技能 一、什么是异常值(Outlier) 定义 异常值(Outlier&#xff0…...

React 记账本项目实战:多页面路由、Context 全局

在本文中,我们将分享一个使用 React 开发的「记账本」项目的实战经验。该项目通过 VS Code 完成,包含首页、添加记录页、编辑页等多个功能页面,采用了 React Router 实现路由导航,使用 Context API 管理全局的交易记录状态,并引入数据可视化组件呈现不同月份的支出情况。项…...

[React] 如何用 Zustand 构建一个响应式 Enum Store?附 RTKQ 实战与 TS 架构落地

[React] 如何用 Zustand 构建一个响应式 Enum Store?附 RTKQ 实战与 TS 架构落地 本文所有案例与数据为作者自行构建,所有内容均为技术抽象示例,不涉及任何实际商业项目 自从之前尝试了一下 zustand 之后,就发现 zustand 是一个轻…...

DeepSeek在职场办公中的高效指令运用与策略优化

摘要 随着人工智能技术的飞速发展,大型语言模型在各个领域的应用日益广泛。DeepSeek作为一款具有影响力的AI产品,为职场办公带来了新的变革与机遇。本文深入剖析DeepSeek在职场办公场景下的提示词指令运用,通过对提示词概念、作用、设计原则的…...

mysql事务脏读 不可重复读 幻读 事务隔离级别关系

看了很多文档,发现针对事务并发执行过程中的数据一致性问题,即脏读、不可重复读、幻读的解释一塌糊涂,这也不能说什么,因为官方SQL标准中的定义也模糊不清。 按照mysql中遵循的事务隔离级别,可以梳理一下其中的关系 隔…...

Fork/Join框架与线程池对比分析

Fork/Join框架与线程池对比分析 1. 概述 线程池(如ThreadPoolExecutor)是Java并发编程中用于管理线程生命周期的通用工具,适用于处理大量独立任务。Fork/Join框架(基于ForkJoinPool)是Java 7引入的专用框架&#xff…...

docker 安装 Gitlab

GitLab 安装 #创建容器数据卷映射目录 mkdir -p /usr/docker/gitlab/config mkdir -p /usr/docker/gitlab/logs mkdir -p /usr/docker/gitlab/data #目录授权 chmod 777 -R /usr/docker/gitlab/*#直接复制可用(记得改下宿主机ipv4,不知道怎么看,输入i…...

【贪心之摆动序列】

题目: 分析: 这里我们使用题目中给的第二个实例来进行分析 题目中要求我们序列当中有多少个摆动序列,摆动序列满足一上一下,一下一上,这样是摆动序列,并且要输出摆动序列的最长长度 通过上面的图我们可以…...

kubectl修改资源时添加注解

kubectl修改资源时添加注解 kubectl修改资源时添加注解老版本的注解(变化注解)删除Annotations查看Annotations信息 查看发布记录回滚 kubectl修改资源时添加注解 参考: 为什么我们要使用kubectl apply 修改资源时,在命令行后添加 --save-configtrue ,就会自动添加此次修改的…...

【C++初学】课后作业汇总复习(四) 复数类与运算符重载

1、复数类输出 如题,要求实现: 1、复数类含两个参数的构造函数,一个为实部,一个为虚部 2、用Show()现实复数的值。 输出 (23i) //如题,要求实现: // //1、复数类含两个参数的构造函数&…...

十四、C++速通秘籍—函数式编程

目录 上一章节: 一、引言 一、函数式编程基础 三、Lambda 表达式 作用: Lambda 表达式捕获值的方式: 注意: 四、函数对象 函数对象与普通函数对比: 五、函数适配器 1、适配普通函数 2、适配 Lambda 表达式 …...

复刻系列-星穹铁道 3.2 版本先行展示页

复刻星穹铁道 3.2 版本先行展示页 0. 视频 手搓~星穹铁道~展示页~~~ 1. 基本信息 作者: 啊是特嗷桃系列: 复刻系列官方的网站: 《崩坏:星穹铁道》3.2版本「走过安眠地的花丛」专题展示页现已上线复刻的网…...

阿里云备案有必要选择备案管家服务吗?自己ICP备案可以吗?

阿里云备案有必要选择备案管家服务吗?新手可以选择备案管家,备案管家不需要自己手动操作,可以高效顺利通过ICP备案。自己ICP备案可以吗?自己备案也可以的,也很简单,适合动手能力强的同学。 阿里云备案管家…...

SQL语言基础(二)--以postersql为例

上次教程我们讲述了数据库中的增,删,改语句,今天我们来学习最后一个–‘改’的语句。 1.select语法 数据库查询只有select一个句子,但select语法相对复杂,其功能丰富,使用方式也很灵活 SELECT [ALL|Dist…...

探索 Rust 语言:高效、安全与并发的完美融合

在当今的编程语言领域,Rust 正以其独特的魅力吸引着越来越多开发者的目光。它诞生于 Mozilla 实验室,旨在解决系统编程中长久以来存在的难题,如今已成为构建可靠、高效软件的有力工具。 1 内存安全 Rust 通过所有权(ownership&a…...

最大公约数和最小倍数 java

在Java中,计算两个数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)是常见的编程问题。以下是具体的实现方法和代码示例。 --- ### **1. 最大公约数 (GCD)** 最大公约数是指…...

OpenHarmony Camera开发指导(三):相机设备输入输出(ArkTS)

相机应用可通过创建相机输入流调用并控制相机设备,创建不同类型的输出流,进而实现预览、拍照、录像等基础功能。 开发步骤 在创建相机设备输入之前需要先完成相机设备管理,详细开发步骤可参考上一篇文章。 创建相机输入流 通过cameraMana…...

通过分治策略解决内存限制问题完成大型Hive表数据的去重的PySpark代码实现

在Hive集群中,有一张历史交易记录表,要从这张历史交易记录表中抽取一年的数据按某些字段进行Spark去重,由于这一年的数据超过整个集群的内存容量,需要分解成每个月的数据,分别用Spark去重,并保存为Parquet文…...

融媒体中心智能语音识别系统设计与实现

县级融媒体中心智能语音识别系统设计与实现 序言 随着融媒体时代的快速发展,新闻采编、专题节目制作对语音转写效率的要求日益提高。作为基层融媒体中心的技术工程师,我们在实际工作中常面临以下痛点: 采访录音整理耗时:传统人…...

学习笔记九——Rust所有权机制

🦀 Rust 所有权机制 📚 目录 什么是值类型和引用类型?值语义和引用语义?什么是所有权?为什么 Rust 需要它?所有权的三大原则(修正版)移动语义 vs 复制语义:变量赋值到底…...

计算机视觉算法实现——电梯禁止电瓶车进入检测:原理、实现与行业应用(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 1. 电梯安全检测领域概述 近年来,随着电动自行车(以下简称"电瓶车"&…...

扩散模型 Diffusion Model 整体流程详解

🧠 Diffusion Model 思路、疑问和代码 文章目录 🧠 Diffusion Model 思路、疑问和代码🔄 一、核心思想:从噪声到图像📦 二、正向过程:加噪🧠 三、反向过程:学习去噪🎯 目…...

[Spark]深入解密Spark SQL源码:Catalyst框架如何优雅地解析你的SQL

本文内容组织形式 总结具体例子执行语句解析层优化层物理计划层执行层 猜你喜欢PS 总结 先写个总结,接下来会分别产出各个部分的源码解析,Spark SQL主要分为以下五个执行部分。 具体例子 接下来举个具体的例子来说明 执行语句 SELECT name, age FR…...

【数据结构_7】栈和队列(上)

一、概念 栈和队列,也是基于顺序表和链表实现的 栈是一种特殊的线性表,其只允许在固定的一段进行插入和删除元素操作。 遵循后进先出的原则 此处所见到的栈,本质上就是一个顺序表/链表,但是,实在顺序表/链表的基础…...

Linux中的cat命令常见用法

在 Linux 中,cat 命令是 concatenate(连接)的缩写,意思是“连接”或“串联”。 基本功能 cat 命令的主要功能是用于查看、合并和创建文件。它会将一个或多个文件的内容输出到标准输出设备(通常是终端屏幕&#xff09…...

css - 实现三角形 div 容器,用css画一个三角形(提供示例源码)简单粗暴几行代码搞定!

效果图 如下图所示&#xff0c;让一个 div 变成三角形&#xff0c;并且可随意更改大小&#xff0c; 本文提供了可运行示例源码&#xff0c;直接复制即可。 实现源码 建议创建一个 demo.html 文件&#xff0c;一键复制代码运行。 <style> .div{width: 0px;height: 0px…...

springboot 项目 jmeter简单测试流程

测试内容为 主机地址随机数 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…...

设计模式实践:模板方法、观察者与策略模式详解

目录 1 模板方法1.1 模板方法基本概念1.2 实验1.2.1 未使用模板方法实现代码1.2.2 使用模板方法的代码 2 观察者模式2.1 观察者模式基本概念2.2 实验 3 策略模式3.1 策略模式基本概念3.2 实验 1 模板方法 1.1 模板方法基本概念 定义&#xff1a;一个操作中的算法的骨架 &…...

Google的AI模型Gemini和Gemini网络协议

粉丝私信问我&#xff1a;gemini如何访问&#xff1f; "Gemini如何访问"需明确区分两种完全不同的技术体系&#xff1a;Google的AI模型Gemini和Gemini网络协议。以下是两者的访问方式详解&#xff1a; 一、访问Google的Gemini AI模型 1. 通过Web应用 地址&#xf…...

HTTP实现心跳模块

HTTP实现心跳模块 使用轻量级的cHTTP库cpp-httplib重现实现HTTP心跳模块 头文件HttplibHeartbeat.h #ifndef HTTPLIB_HEARTBEAT_H #define HTTPLIB_HEARTBEAT_H#include <string> #include <thread> #include <atomic> #include <chrono> #include …...

基于web的民宿信息系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临&#xff0c;民宿过去的民宿信息方式的缺点逐渐暴露&#xff0c;对过去的民宿信息的缺点进行分析&#xff0c;采取计算机方式构建民宿信息系统。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;提出了一种民宿信息管理、民宿信息管理…...

使用OpenSceneGraph (osg)实现一个星系漫游

简介 使用OpenSceneGraph (osg)实现了一个太阳系漫游的程序&#xff0c;具有以下特点&#xff1a; 1.通过按键控制飞行器前进后退、空间姿态&#xff1b; 2.星系渲染&#xff1b; 3.背景星空渲染&#xff1b; 效果 提供了一张超大的星空背景图 代码示例 int main(int a…...

笔试专题(九)

文章目录 十字爆破&#xff08;暴力&#xff09;题解代码 比那名居的桃子&#xff08;滑动窗口/前缀和&#xff09;题解代码 分组&#xff08;暴力枚举 优化二分&#xff09;题解代码 十字爆破&#xff08;暴力&#xff09; 题目链接 题解 1. 暴力 预处理 2. 如果单纯的暴…...

sklearn决策树 待更新

注意&#xff1a;sklearn中所有的决策树模型包括回归决策树实现的是CART决策树算法&#xff0c;在官方文档中有介绍。sklearn中的决策树模型最终得到的树结构都是二叉树&#xff0c;因为CART算法生成的就是二叉树。 DecisionTreeClassifier类 如果待预测样本有多个类别具有相同…...

eino v0.3.21 重磅发布!节点中断控制+空值映射支持,AI应用开发再添神器!​

CloudWeGo/eino v0.3.21 作为最新补丁版本&#xff0c;聚焦流程控制与数据映射两大核心场景&#xff0c;为AI应用与微服务开发者提供更灵活的调试能力与容错设计&#xff01; 1. 节点中断控制&#xff08;Feat: Node Interrupt&#xff09; • 功能亮点&#xff1a;新增 node …...

力扣每日打卡 50. Pow(x, n) (中等)

[TOC](力扣 50. Pow(x, n) 中等) 前言 这是刷算法题的第十一天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 50. Pow(x, n) (中等) 一、题目内容 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1…...

Mac M1管理多个Node.js版本

目录 1. 使用 nvm (Node Version Manager) 1.1.安装 nvm 1.2.安装Node.js版本 1.3.查看已安装的node版本列表 1.4.使用特定版本的Node.js 1.5.查看当前使用的版本 2. 使用 fnm (Fast Node Manager) 2.1.安装 fnm 2.2.安装Node.js版本 2.3.查看已安装的版本 2.4.使用…...

arm_math.h、arm_const_structs.h 和 arm_common_tables.h

在 ​​FOC&#xff08;Field-Oriented Control&#xff0c;磁场定向控制&#xff09;​​ 中&#xff0c;arm_math.h、arm_const_structs.h 和 arm_common_tables.h 是 CMSIS-DSP 库的核心组件&#xff0c;用于实现高效的数学运算、预定义结构和查表操作。以下是它们在 FOC 控…...

每天五分钟深度学习:非线性激活函数的导数

本文重点 本文探讨了神经网络中几种常见非线性激活函数(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的导数特性。通过对各激活函数导数的数学推导与实际应用分析,揭示了不同激活函数在梯度传播、收敛速度及模型表达能力方面的差异。研究发现,ReLU及其变体在计算效率与…...

OpenHarmony5.0.2 USB摄像头适配

开发环境 OpenHarmony5.0.2 RK3568 USB摄像头 遇到问题 编译后插上USB摄像头后打开相机无图像 解决思路 5.0.2版本是支持USB摄像头的&#xff0c;需要修改默认的板载相机配置即可。 修改代码 1、修改配配置 文件地址&#xff1a;vendor/hihope/rk3568/hdf_config/uhdf…...

vue: router基础用法

router基础用法 1.安装router2.配置router3.路由编程1.编程式导航2.声明式导航 1.安装router 在node环境下&#xff0c;直接运行 npm install router42.配置router 创建文件夹并命名为router 在router文件夹中创建index.js index.js示例配置如下&#xff1a; import { creat…...

IDE中使用Spring Data Redis

步骤一&#xff1a;导入Spring Data Redis的maven坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 步骤二&#xff1a;配置Redis数据源 步骤三&…...

【计网】网络交换技术之报文交换(复习自用,了解,重要3)

复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记&#xff1a; 电路交换 分组交换 一、报文交换的定义 报文交换&#xff08;Me…...

GitLab 17.x 配置 https

文章目录 使用外部 nginx 参考&#xff1a;https://docs.gitlab.com/omnibus/settings/nginx.html 使用内置 nginx 参考&#xff1a;https://docs.gitlab.com/omnibus/settings/ssl/index.html#configure-https-manually // 使用自己手工申请证书 $ mkdir /etc/gitlab/ssl $ m…...

中间件--ClickHouse-1--基础介绍(列式存储,MPP架构,分布式计算,SQL支持,向量化执行,亿万级数据秒级查询)

1、概述 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它由俄罗斯的互联网巨头Yandex为解决其内部数据分析需求而开发&#xff0c;并于2016年开源。专为大规模数据分析&#xff0c;实时数据分析和复杂查询设计&#xff0c;具有高性能、实时数据和可扩展性等…...

【编写Node接口;接口动态获取VUE文件并异步加载, 并渲染impoort插件使用】

编写Node接口&#xff1b;接口动态获取VUE文件并异步加载, 并渲染impoort插件使用&#xff1b; vue3-sfc-loader主要特征&#xff1a; 编写Node接口&#xff1a;Vue2项目使用&#xff1a;Vue3项目使用&#xff1a;&#xff08;页面按需加载插件、图片等&#xff09;主要使用&am…...

vue入门:template 和 JSX

temlplate 和 jsx 最终渲染时都是创建 dom 节点 template 和 JSX 混合使用 <template><div><span>Message: {{ msg }}</span><br/><VNodes :vnodes"getJSXSpan()"/><VNodes :vnodes"getAnchoredHeading(4)"/>…...

[Dify] Dify 本地部署及连接 Ollama 模型全流程指南

在构建私有化智能应用时,Dify 作为一款开源的大模型应用开发平台,具备强大的插件体系和可扩展能力。本文将详细介绍如何在本地环境中部署 Dify,并成功连接本地的 Ollama 模型,解决实际部署过程中常见的问题与错误。 一、本地部署 Dify 步骤详解 1. 安装 Docker 环境(以 W…...

基于PyQt5的Jupyter Notebook转Python工具

一、项目背景与核心价值 在数据科学领域,Jupyter Notebook因其交互特性广受欢迎,但在生产环境中通常需要将其转换为标准Python文件。本文介绍一款基于PyQt5开发的桌面级转换工具,具有以下核心价值: 可视化操作:提供友好的GUI界面,告别命令行操作 批量处理:支持目录递归…...