Python武器库开发-高级特性篇(八)

2023-10-27 19:44

本文主要是介绍Python武器库开发-高级特性篇(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高级特性篇(八)

高阶函数

Python作为一门高级编程语言,拥有着强大的函数式编程能力。其中高阶函数就是Python函数式编程的重要组成部分。在Python中,函数可以被当作变量一样进行操作,包括作为参数传递给其他函数,或者作为返回值从函数中返回。这种能够处理函数的函数就被称为高阶函数。简而言之,高阶函数就是能够接受函数作为参数或者返回函数的函数。

在Python中,函数被称为一等公民(first-class citizens),这意味着函数可以像其他数据类型一样进行操作,例如可以赋值给变量、作为参数传递、作为返回值返回等。这种特性使得Python中的函数可以非常灵活地被用于各种不同的场景。高阶函数是指接收函数作为参数或者返回值是一个函数的函数,是Python函数式编程的重要手段之一。

在函数式编程中,函数是一等公民,可以作为变量、参数、返回值等使用。下面我们将分别介绍Python高阶函数中的四个经典应用:filter、reduce、sorted、map,并结合实际案例进行详细讲解:

filter函数是Python中常用的高级函数之一,其作用是从一个序列中过滤出符合条件的元素,将结果以一个filter类型返回。

下面我们来看一下filter函数的案例:

# 过滤列表中的偶数
def is_even(n):return n % 2 == 0num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_list = list(filter(is_even, num_list))
print(new_list)

这个例子中,我们定义了一个is_even函数用于判断一个数是否为偶数。然后我们用filter函数对num_list中的元素依次进行判断,将所有偶数提取出来,最终得到一个新的列表new_list:

在这里插入图片描述

reduce函数是Python中另一个常用的高级函数,其作用是对一个序列进行归约操作,将其简化为一个数。reduce函数会将归约函数function递归作用于序列sequence的每个元素,将结果与下一个元素一起作为function的输入,最终仅得到一个结果值。如果指定了initial,则将该值与序列的第一个元素一起进行归约操作。

下面我们来看一个reduce函数的实例:

# 计算列表中数字的和from functools import reducedef add(x,y):return x + ynum_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = reduce(add, num_list)
print(result)

这个例子中,我们定义了一个add函数用于求和。然后我们用reduce函数对num_list中的元素依次进行求和,得到最终的结果。其中,reduce函数会将add函数用于num_list中的前两个元素,然后将结果与第三个元素合并,一直递归下去,直到得到最终的结果:

在这里插入图片描述

sorted函数是Python中常用的高级函数之一,其作用是对一个集合进行排序,返回一个新的排序后的集合。sorted函数会返回一个新的集合,该集合是iterable排序后的结果。下面我们来看一个Sorted函数的实例:

# 对列表中的数字进行排序num_list = [5, 2, 3, 1, 4]
result = sorted(num_list)
print(result)

这个例子中,我们使用sorted函数对num_list进行排序。sorted函数会将num_list排序后生成一个新的列表,并将其赋值给result变量:

在这里插入图片描述

map函数是Python中常用的高级函数之一,其作用是对一个序列中的每个元素进行函数操作,返回一个新的序列。map函数会对序列中的每个元素依次调用function函数,返回一个新的序列。下面我们来看一个map函数的实例:

# 对列表中的数字求平方def square(n):return n ** 2num_list = [1, 2, 3, 4, 5]
new_list = list(map(square, num_list))
print(new_list)

这个例子中,我们定义了一个square函数用于对数字求平方。然后我们用map函数对num_list中的元素依次进行求平方,并组成一个新的列表new_list:

在这里插入图片描述

匿名函数

在Python中,匿名函数是没有定义名称的函数。虽然def在Python中使用关键字定义了普通函数,但使用关键字定义了匿名函数lambda。因此,匿名函数也称为lambda函数。

python中的lambda函数具有以下语法:

lambda arguments: expression

Lambda函数可以具有任意数量的参数,但只能有一个表达式。表达式被求值并返回。Lambda函数可在需要函数对象的任何地方使用。

这是一个使输入值翻倍的lambda函数示例:

# 程序展示lambda函数的使用
double = lambda x: x * 2print(double(5))

以上实例输出的结果:

在这里插入图片描述

在上面的程序中,lambda x: x * 2是lambda函数。这里x是参数,x * 2是求值和返回的表达式。

这个函数没有名字。它返回一个函数对象,该对象被分配给标识符double。我们现在可以把它叫做普通函数。下面声明

double = lambda x: x * 2

就等同于

def double(x):return x * 2

当我们临时需要匿名函数时,我们使用lambda函数。在Python中,我们通常将其用作高阶函数的参数(该函数将其他函数作为arguments)。Lambda函数可以与filter(),map()等内置函数一起使用。在Python函数中filter()接受一个函数和一个列表作为参数。使用列表中的所有项调用该函数,并返回一个新列表,其中包含函数计算结果为True的项。这是使用filter()函数从列表中仅滤除偶数的示例。

lambda与filter()一起使用的示例:

# 程序从列表中过滤出偶数项
my_list = [1, 5, 4, 6, 8, 11, 3, 12]new_list = list(filter(lambda x: (x%2 == 0) , my_list))print(new_list)

以上代码的输出:

在这里插入图片描述

在Python中的map()函数接受一个函数和一个列表。

使用列表中的所有项调用该函数,并返回一个新列表,其中包含该函数为每个项返回的项。

这是使用map()函数将列表中所有项目翻倍的示例:

# 使用map()将列表中的每个项加倍my_list = [1, 5, 4, 6, 8, 11, 3, 12]new_list = list(map(lambda x: x * 2 , my_list))print(new_list)

以上代码的输出:

在这里插入图片描述

偏函数

偏函数(Partial function)是Python的functools模块提供的一个很有用的功能。简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

举个例子,int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

print(int('12345'))

以上代码输出的实例:

在这里插入图片描述

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:

print(int('12345', base=8))
print(int('12345', 16))

以上代码输出的实例:

在这里插入图片描述

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

def int2(x, base=2):return int(x, base)print(int2('1000000'))
print(int2('1010101'))

这样,我们转换二进制就非常方便了:

在这里插入图片描述

functools.partial可以帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

import functools
int2 = functools.partial(int, base=2)
print(int2('1000000'))
print(int2('1010101'))

以上代码输出的实例:

在这里插入图片描述

这篇关于Python武器库开发-高级特性篇(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287952

相关文章

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模