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

Python入门教程 —— 高阶函数和装饰器

1.递归函数

什么是递归函数

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

递归函数的作用

举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n

解决办法1:使用循环来完成

def cal(num):result,i = 1,1while i <= num:result *= ii+= 1return resultprint(cal(3))
看阶乘的规律

1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

解决办法2:使用递归来实现

def factorial(num):result = 1if num == 1:return 1result = num * factorial(num -1)return result
print(cal(3))

原理

2.匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

lambda函数的语法只包含一个语句,如下:

lambda 参数列表: 运算表达式

如下实例:

sum = lambda arg1, arg2: arg1 + arg2# 调用sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

以上实例输出结果:

Value of total :  30
Value of total :  40

Lambda函数能接收任何数量的参数但只能返回一个表达式的值。

匿名函数可以执行任意表达式(甚至print函数),但是一般认为表达式应该有一个计算结果供返回使用。

python在编写一些执行脚本的时候可以使用lambda,这样可以接受定义函数的过程,比如写一个简单的脚本管理服务器。

应用场合

函数作为参数传递

>>> def fun(a, b, opt):
...     print("a = " % a)
...     print("b = " % b)
...     print("result =" % opt(a, b))
...
>>> add = lambda x,y:x+y
>>> fun(1, 2, add)  # 把 add 作为实参传递
a = 1
b = 2
result = 3

练习:

有一个列表

students = [{'name': 'zhangsan', 'age': 18, 'score': 92},{'name': 'lisi', 'age': 20, 'score': 90},{'name': 'wangwu', 'age': 19, 'score': 95},{'name': 'jerry', 'age': 21, 'score': 98},{'name': 'chris', 'age': 17, 'score': 100},
]

要求,对上述列表里的数据按照score进行升序排序。

Python中使用函数作为参数的内置函数和类:

函数名或类名功能参数描述
sorted函数用来将一个无序列表进行排序函数参数的返回值规定按照元素的哪个属性进行排序
filter类用来过滤一个列表里符合规定的所有元素,得到的结果是一个迭代器函数参数的返回值指定元素满足的过滤条件
map类将列表里的每一项数据都执行相同的操作,得到的结果是一个迭代器函数参数用来指定列表里元素所执行的操作
reduce函数对一个序列进行压缩运算,得到一个值。python3以后,这个方法被移到了functools模块函数参数用来指定元素按照哪种方式合并

3.高阶函数

在Python中,函数其实也是一种数据类型。

def test():return 

相关文章:

Python入门教程 —— 高阶函数和装饰器

1.递归函数 什么是递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n 解决办法1:使用循环来完成 def cal(num):result,i = 1,1while i <= num:result *= ii…...

RSA密码的安全性分析(简化版本)

RSA的安全性是基于分解大整数的困难性假定&#xff0c;之所以认为是假定是因为至今还未能证明大整数就是NP问题&#xff0c;也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高&#xff0c;原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...

解决Vue中设置el-select的高度不生效问题

el-select是Element UI框架中的一个选择器组件&#xff0c;它允许用户从多个选项中选择一个或多个项目。但这里确存在一个小坑&#xff0c;我们可以看到直接修改el-select的高度是无法生效的 <template><div id"login"><el-select v-model"role…...

解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题

1 功能特点 openpyxl&#xff1a; 这是一个专门用于操作Excel文件&#xff08;.xlsx/.xlsm&#xff09;的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素&#xff0c;如单元格、行、列、工作表等。例如&#xff0c;可以通过openpyxl轻松地创建一个新的Excel工作…...

高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换

1. 无穷小比较 1. 本质&#xff1a;就是函数的极限趋于0时的速度&#xff0c;谁快谁慢的问题。 2. 定义&#xff1a;若是在同一自变量的变化过程中的无穷小&#xff0c;且&#xff0c;则&#xff1a; ①&#xff1a;若&#xff0c;则称是比的高阶无穷小&#xff0c;记作&…...

计算队列中的‘捣乱分子’对数:一种量化无序程度的方法

计算队列中的‘捣乱分子’对数:一种量化无序程度的方法 前言解题思路关键点实现代码时间复杂度分析前言 在日常生活中,我们经常会遇到需要排队的场景,比如买票、候车、就餐等。在理想的排队情况下,人们会按照某种顺序(如先到先服务)整齐地排成一列。然而,总有一些人不遵…...

如何在不丢失数据的情况下从 IOS 14 回滚到 IOS 13

您是否后悔在 iPhone、iPad 或 iPod touch 上安装 iOS 14&#xff1f;如果你这样做&#xff0c;你并不孤单。许多升级到 iOS 14 beta 的 iPhone、iPad 和 iPod touch 用户不再适应它。 如果您在正式发布日期之前升级到 iOS 14 以享受其功能&#xff0c;但您不再适应 iOS 14&am…...

提升汽车金融租赁系统的效率与风险管理策略探讨

内容概要 在汽车金融租赁系统这个复杂的生态中&#xff0c;提升整体效率是每个企业都渴望达成的目标。首先&#xff0c;优化业务流程是实现高效运行的基础。通过分析目前的流程&#xff0c;找出冗余环节并进行简化&#xff0c;能够帮助企业缩短审批时间&#xff0c;提高客户满…...

Git 入门(一)

git 工作流如下&#xff1a; 命令如下&#xff1a; clone&#xff08;克隆&#xff09;: 从远程仓库中克隆代码到本地仓库checkout &#xff08;检出&#xff09;:从本地仓库中检出一个仓库分支然后进行修订add&#xff08;添加&#xff09;: 在提交前先将代码提交到暂存区com…...

pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃

前面写过两篇相关的文章&#xff1a; PyQt应用程序打包Python自动按键 这两篇文章都没有提到下面的这个重要问题&#xff1a; 采用Pyinstaller冻结打包多进程程序时&#xff0c;必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创…...

OSI模型的网络层中产生拥塞的主要原因?

&#xff08; 1 &#xff09;缓冲区容量有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 2 &#xff09;传输线路的带宽有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 3 &#xff09;网络结点的处理能力有限&#xff1b;&#xff08; 1 分…...

服务器开发 的设计模式(Design Patterns)核心知识

服务器开发的设计模式&#xff08;Design Patterns&#xff09;核心知识 在现代软件开发中&#xff0c;设计模式是一组为解决特定问题而重用的解决方案。它们是经过时间考验的最佳实践&#xff0c;为开发人员提供了一种有效的解决方案来应对常见的软件设计问题。特别是在服务器…...

智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述

本文要点 ]本项目的项目文件中的三个Part终于“拼”出来的&#xff08;个别用词可能还需斟酌&#xff0c;但样子、格式和意思 差不多): Part1【凡间-AI众生】 人性化&去中心化-个体人生观 语言有关&#xff08;语言交流-经验常识实践 信条 行为主义 随机数-本质偶然的 想…...

Lucas-Kanade光流法详解

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 光流&#xff08;Optical Flow&#xff09;描述的是图像序列中各像素点随时间的运动情况&#xff0c;是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...

基于YOLO5的机械臂视觉抓取实现

前言&#xff1a; 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析&#xff0c;可以精确计算出机器人末端执行器的位姿信息&#xff0c;从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤&#xff0c;标…...

Git 仓库与文件管理笔记

Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…...

Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)

文章目录 1、信号与槽的参数2、为什么要有信号槽机制&#xff1f;3、断开并重新连接4、槽函数lambda写法 1、信号与槽的参数 信号和槽可以带参数&#xff0c;当信号带有参数时&#xff0c;槽的参数必须和信号的一致&#xff0c;此时发送信号就可以给信号函数传递实参&#xff…...

043_小驰私房菜_MTK Camera,Hal层将camera型号写到property属性中

【问题背景】 app层需要知道当前设备的摄像头型号,然后做一些差异化处理。底下如何上报这个摄像头型号? 【分析】 在kernel和hal层,都是有地方能获取到当前摄像头的型号,就看在哪里添加方便。获取到摄像头硬件型号后,将其写入到property属性, 然后app就可以通过读取该…...

Java线程

目录 一、线程入门 二、线程同步 三、死锁 四、线程的方法 五、线程的流程图 六、线程池 一、线程入门 1.进程&#xff1a;每一个软件都是一个进程。 2.线程&#xff1a;进程是由多个线程组成的。 3.进程和线程的关系&#xff1a;一个进程是对应一个或者是多个线程的。…...

JMeter 的 If Controller:开启性能测试的智能大门

嘿&#xff0c;宝子们&#xff01;今天咱们就来聊聊 JMeter 里超级厉害的 If Controller&#xff0c;它就像是一把神奇的钥匙&#xff0c;能帮我们打开灵活测试的大门&#xff0c;让你的测试计划变得更加智能和高效。 一、If Controller 初印象 想象一下&#xff0c;你正在指…...

node内置模块之---os 模块

os 模块的作用 os 模块是 Node.js 的一个核心模块&#xff0c;提供了与操作系统交互的一些功能。它使得 Node.js 应用可以访问操作系统的底层信息&#xff0c;并执行一些系统级的操作&#xff0c;比如文件系统操作、环境变量、进程管理等。 os 模块的相关api 文件系统路径操…...

PgSQL如何用cmd命令行备份和还原数据库

一、备份 备份为压缩的二进制格式&#xff08;通常更快且占用空间更少&#xff09; pg_dump -U username -Fc -h hostname -p port -d dbname -F p -f backup.sql-U username&#xff1a;指定连接数据库的用户名&#xff08;默认是 postgres&#xff09;。-Fc&#xff1a;备…...

neo4j学习笔记

图数据库 图数据库是基于图论实现的一种NoSQL数据库&#xff0c;其数据存储结构和数据查询方式都是图论为基础的&#xff0c;图数据库主要用于存储更多的连接数据。 图论&#xff08;GraphTheory&#xff09;是数学的一个分支。图论以图为研究对象&#xff0c;图论的图是由若干…...

Halcon 显示异常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …...

2021年3月多省联考《申论》B卷真题解析

2021年福建公务员考试申论试题&#xff08;乡镇卷&#xff09; 材料一 在传统乡镇布局中&#xff0c;部分乡镇面积小、人口少&#xff0c;但管理机构、干部职数、机构编制、财政投入均不少&#xff0c;行政运行成本较高。合理调整乡镇行政区划&#xff0c;有助于统筹设置乡镇服…...

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…...

主机A与主机B建立TCP连接的三次握手过程

&#xff08; 1 &#xff09;主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段&#xff08;第一次握手&#xff09;。&#xff08; 1 分&#xff09; &#xff08; 2 &#xff09;一旦包含 SYN 报文段的 IP 数据报到达主机 B &#xff0c; SYN 报文段被从数据报…...

vue3 vite 动态加载路由遇到的问题

记录一下动态加载路由遇到的问题 正常使用import引入静态路由是没问题的 component: () > import(/components/ExampleComponent.vue)动态引入的时候写成import就不行了 由于后端给的路由格式比较反人类…我这边先递归把获取到的数据格式做了一个整合. const processedDa…...

仿生的群体智能算法总结之一(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是10种常见的群体智能算法: 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swarm Optimization (PSO) 粒子群优…...

02pandas读取和保存数据的方法

pandas读取和保存数据的方法 一、pandas支持的数据格式二、pandas常用数据读取方法1. 准备工作2. 代码示例1.pandas数据读取常用的方法2. read_excel 方法&#xff08;1&#xff09;read_excel()方法&#xff1a;读取excel文件&#xff08;2&#xff09;head()方法&#xff1a;…...

【STM32项目】智能物联网驱动的生物样本培育与管理辅助系统(完整工程资料源码)

视频功能演示: 智能物联网驱动的生物样本培育与管理辅助系统 目录: 目录 视频功能演示: 目录:...

家教老师预约平台小程序系统开发方案

家教老师预约平台小程序系统将连接学生/家长与家教老师&#xff0c;提供一站式的家教服务预约体验。 一、用户需求分析1、家教老师&#xff1a;希望获得更多的学生资源&#xff0c;通过平台展示自己的教学特长和经验&#xff0c;管理个人日程&#xff0c;接收并确认预约请求&a…...

uniapp 自定义类微信支付键盘 (微信小程序)

效果图 代码: <view class"popups popupsB"><view class"appreciatePrice"><view class"appreciatePriceTitle">赞赏金额</view><view class"appreciatePriceInput flex ac">&#xffe5;<input typ…...

推荐5款局域网IP扫描工具,支持电脑+Android!

在日常网络管理中&#xff0c;快速扫描局域网中的设备和IP地址是一项基本但非常重要的任务。无论是排查网络问题还是进行设备管理&#xff0c;一款好用的 IP 扫描工具都能让你事半功倍。 如何选择适合自己需求的局域网 IP 扫描工具&#xff1f;有哪些功能强大又易于上手的工具…...

第十一章 图论

/* * 题目名称&#xff1a;连通图 * 题目来源&#xff1a;吉林大学复试上机题 * 题目链接&#xff1a;http://t.cn/AiO77VoA * 代码作者&#xff1a;杨泽邦(炉灰) */#include <iostream> #include <cstdio>using namespace std;const int MAXN 1000 10;int fathe…...

算法学习(21)—— BFS解决FloodFill问题

关于FloodFill 关于FloodFill算法&#xff0c;我们之前在dfs章节已经介绍过了&#xff1a;算法学习&#xff08;17&#xff09;—— FloodFill算法-CSDN博客 下面是用bfs宽搜来解决的实例 部分OJ题详解 733. 图像渲染 733. 图像渲染 - 力扣&#xff08;LeetCode&#xf…...

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标&#xff1a;  网络应用的 原理&#xff1a;网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例&#xff1a;互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…...

CSS 之 响应式设计 前世今生

CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、历史上的网站布局三、响应式设计之前的灵活布局四、响应式设计五、媒介查询六、灵活网格七、现代布局技术7.1 多栏布局7.2 伸…...

前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)

输入npm i后&#xff0c;一直卡在sill idealTree buildDeps&#xff0c;一动不动 cnpm可以安装成功&#xff0c;但使用cnpm不会生成package-lock.json文件 设置淘宝依赖&#xff0c;依然卡住&#xff0c;挂梯子也不行 解决方法&#xff1a; // 取消ssl验证 set strict-ssl …...

【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 9.2.1. Result枚举 通常情况下&#xff0c;错误都没有严重到需要停止整个程序的地步。某个函数之所以运行失败或者是遇到错误通常是由一些…...

[241231] CachyOS 2024 年终总结:性能飞跃与社区繁荣 | ScyllaDB 宣布转向开源可用许可证

目录 CachyOS 2024 年终总结&#xff1a;性能飞跃与社区繁荣ScyllaDB 宣布转向开源可用许可证 CachyOS 2024 年终总结&#xff1a;性能飞跃与社区繁荣 CachyOS 2024 年的最后一个版本 (也是第 13 个版本) 已经发布&#xff0c;同时也迎来了辞旧迎新之际。让我们一起回顾 Cachy…...

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构&#xff0c;被应用在图像识别、自然语言处理甚至是语音识别领域&#xff0c;因为图像数据具有显著的局部与整体关系&#xff0c;其在图…...

java并发之AQS

一、简介 AQS&#xff0c;全称&#xff1a;AbstractQueuedSynchronizer&#xff0c;是一个JDK提供的用于构建锁、同步器等线程协作工具类的框架&#xff0c;内部维护FIFO双向队列&#xff08;双向链表实现&#xff09;。 AQS重要属性&#xff1a; // 表示同步状态。它既可以表…...

Synthesia技术浅析(一)

Synthesia 是一款利用人工智能技术生成视频内容的产品&#xff0c;其中变分自编码器&#xff08;Variational Autoencoder, VAE&#xff09;技术在视频生成过程中起到了关键作用。 1. 变分自编码器&#xff08;VAE&#xff09;概述 变分自编码器&#xff08;VAE&#xff09;是…...

SQL偏移类窗口函数—— LAG()、LEAD()用法详解

SQL偏移类窗口函数&#xff1a;LAG() 和 LEAD() 用法详解 在 SQL 中&#xff0c;偏移类窗口函数 LAG() 和 LEAD() 用于访问当前行的前几行或后几行的值。 1. LAG() 函数 LAG() 函数返回当前行的前几行的数据。 LAG(Expression, OffSetValue, DefaultVar) OVER (PARTITION BY …...

PHP语言的计算机基础

计算机基础与PHP语言入门 在当今信息技术高速发展的时代&#xff0c;计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识&#xff0c;不仅能增强我们对信息技术的理解&#xff0c;还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...

39. 解压报文

题目描述 为了提升数据传输的效率&#xff0c;会对传输的报文进行压缩处理输入一个压缩后的报文&#xff0c;请返回它解压后的原始报文.压缩规则:n[str]&#xff0c;表示方括号内部的str正好重复n次。注意n为正整数(0<n<100)&#xff0c;str只包含小写英文字母&#xff0…...

SpringBoot日志快速集成详解-生产实战

SpringBoot日志快速集成详解 1. 添加依赖2. 创建 logback-spring.xml 配置文件示例 logback-spring.xml 配置&#xff1a; 3. 启用 Spring Boot 自动配置4. 配置 Spring Boot 启动日志级别5. 运行与验证 博文专注于最快速的实战&#xff0c;没有那么多逼逼叨叨的理论&#xff0…...

基于 Node.js 的 ORM(对象关系映射)工具——Sequelize介绍与使用,并举案例分析

便捷性介绍 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 提供了丰富的功能&#xff0c;帮助开发者用 JavaScript&#xff08;或 TypeScript&#xff09;代码操作数据库&#xff0c;而无需直接书写 SQL 语句。 Se…...

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案&#xff0c;适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取&#xff0c;减少交叉感染风险。 - 具备智能识别和分类功能&am…...