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绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur