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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及