首页 > 编程语言 >Python趣味入门11:函数作为参数以及匿名函数

Python趣味入门11:函数作为参数以及匿名函数

时间:2023-12-29 17:38:12浏览次数:32  
标签:11 ... 函数 Python 列表 匿名 参数

Python函数本质上是一段代码的集合,扩展对于函数的高级用法,有利于更好的认识Python,函数是Python的核心。本篇扩展了函数的2个应用,一是把函数本身作为参数,二是介绍了匿名函数的应用。

1、以函数作为参数:

1.1 概念

Python里可以把函数本身当成是参数,比如Python内置函数map可以通过传入的函数返回值来一一映射列表集合里的元素,我们也可以在定义函数时,以调用函数的方式使用参数。

1.2 Map映射

假设有一个列表1至9共有9个元素,现在需要求其平方数列。

map(函数名,列表)

map函数的示例

1 >>> def square(x):
2 ...     return x**2
3 ... 
4 >>> s = map(square,[1,2,3,4,5,6,7,8,9])
5 >>> list(s)
6 [1, 4, 9, 16, 25, 36, 49, 64

 

以上的代码,主要完成了如下的动作:

  • 定义了square函数,返回参数的平方
  • 调用map函数生成平方数列

在包含map语句,我们使用了先前定义的函数名称square,作为参数传入另一个函数,并且完成了映射的操作。

1.3 定义包含函数参数的函数

邓布利多校长想比较霍格沃茨学校两个班a,b的成绩,有两种比较方式,一种是比较最高分,另一种是比较平均分,我们用一个函数来搞定!

>>> def compare(way,a,b):
...     if way(a)>way(b):
...             print('a班赢了')
...     elif way(a)==way(b):
...             print('平了')
...     else:
...             print('b班赢了')
>>> from statistics import mean 
>>> compare(mean,[90,80,90],[100,50,100])
a班赢了
>>> compare(max,[90,80,90],[100,50,100])
b班赢了

 

上面的代码定义了函数compare,其中有三个参数:

  • way: 函数参数,表示比较方式,是不是函数参数我们从代码中发现,在代码中way后紧跟圆括号,判断这是分别对a、b进行“某种”操作。
  • a、b: 列表分别表示两个班的成绩。

在第1调用时是平均分比较,结果是a班赢了。

compare(mean,[90,80,90],[100,50,100])

平均分代码引用了statistics模块的mean,本函数用来计算列表的平均值。

2、匿名函数:

2.1 概念

如果把每个函数形容成是固定下来的武术套路的话,有的时候简单的一两招,并不值得编成一个套路。我们定义函数也是这样,匿名函数类似于简单的两招,它是一种简化版的函数,它没有自己的名称,也不能被重复使用,但是它必须返回值,使用匿名函数的目的就是快速计算。

在Python当中匿名函数又叫:lambda表达式,其语法如下:

lambda [arg1[, arg2, ... argN]]: expression
  • 以关键字lambda开头
  • 后紧跟参数列表,使用逗号分隔
  • 冒号后跟计算式,函数返回值就是计算式的结果

表达式本身可以当成一个函数来使用,常用的栗子如下。

2.2 排序

Python内置排序sorted函数,语法如下:

sorted(列表,key=排序关键字)
  • 参数key:返回关键字的函数(一般使用匿名函数)
  • 返回值:排序好的列表结果

排序时程序会把列表中的单个元素放入参数key指定的函数当中的参数里,根据返回的值进行排序。

目前直男小牛叔在写复旦大学的毕业论文,论文的标题都是类似于1、1.1、2之类的文本,如果简单按字符排序必然会出现1、10、1.10、1.2 ...... 不合理的奇怪序列(字符总是从前到后比较那么10会比2小),比如如下的列表['10','1.1','1','2','1.3','3','2.10','2.2'],我们可以使用如下的代码:

1 >>> a = ['10','1.1','1','2','1.3','3','2.10','2.2']
2 >>> sorted(a)
3 ['1', '1.1', '1.3', '10', '2', '2.10', '2.2', '3']
4 >>> sorted(a,key = lambda x:int(x.split('.')[0]) + (int(x.split('.')[1])/10000 if '.' in x else 0))
5 ['1', '1.1', '1.3', '2', '2.2', '2.10', '3', '10']
6 >>> 

 

我们先看看key参数当中的匿名函数是什么:

引申:Python语言把函数也当成是类似于一种包含代码的变量,函数本身可以类似于变量,作为传递的参数,这本是Javascript等类似函数式编程的方式。其实,函数也可以被当成是返回值。

---小牛书0基础Python系列教程---

【每天1篇1周入门,请点击下方的喜欢和收藏,以备学习】

标签:11,...,函数,Python,列表,匿名,参数
From: https://www.cnblogs.com/dosboy/p/17935352.html

相关文章

  • 雷军称小米汽车不可能卖 9 万 9;杭州破获重大勒索病毒案丨 RTE 开发者日报 Vol.116
     开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,欢迎......
  • 无涯教程-Java 正则 - MatchResult int end(int group)函数
    java.time.MatchResult.end(intgroup)方法返回在此匹配期间给定组捕获的子序列的最后一个字符之后的偏移量。intend(intgroup)-声明intend(intgroup)group  - 该匹配器模式中捕获组的索引。intend(intgroup)-返回值最后一个字符匹配后的偏移量。intend(......
  • mysql日期相关函数使用
    最近要经常用到mysql的日期相关函数,但以前用的少,索性总结下1DATE_FORMAT(date,format)published_at字段以datetime类型存储SELECTtitle,DATE_FORMAT(published_at,'%Y-%m-%d')FROMblog_noteWHEREDATE_FORMAT(published_at,'%Y-%m')='2023-09'    2STR_TO_DAT......
  • Python趣味入门10:推倒繁琐化烦为简的推导式
    前言《西部世界》的德洛丽丝进入了MAZE迷宫,假设她需要列出一系列的平方数作为密码,来进入迷宫。在以往的代码生成类似的数列需要使用循环语句,写多行语句。Python有了推导式,只需要1句就足够了,下面介绍本篇的主角。本篇的主角是推导式comprehensions(又称解析式),是Python的大杀器之一......
  • python学习笔记3(概述、开发工具、编写方法、print简单语法)
    上一节学习了环境准备、职业方向、执行方式三个方面学习本节内容:(一)概述1、了解python语言1989年荷兰人发明、面向对向、解释型设计哲学:优雅、明确、简单,“人生苦短,我用python”脱水语言,能够和其他语言编写的模块轻松联结,“脱水语言”2、版本发展历程发展历程比较简单,前两天我在网上......
  • python opencv保存摄像头视频
    要使用Python和OpenCV将摄像头视频保存为.mp4格式,您需要使用cv2.VideoWriter的fourcc参数指定视频编码器。在大多数情况下,使用cv2.VideoWriter_fourcc(*'mp4v')将视频保存为.mp4格式是一个好选择。以下是一个示例代码: python复制importcv2 #0代表的是电脑上的默认摄像头......
  • ECharts 是一个使用 JavaScript 实现的开源可视化库¹²³⁴。它可以流畅地运行在 PC
    ECharts是一个使用JavaScript实现的开源可视化库¹²³⁴。它可以流畅地运行在PC和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11,Chrome,Firefox,Safari等)²³⁴。ECharts底层依赖轻量级的Canvas类库ZRender¹²³,提供直观,生动,可交互,可高度个性化定制的数据可视化图表¹......
  • `pip freeze` 是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python
    pipfreeze是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python的包管理器pip中使用,主要用于生成一个项目的依赖列表。这个列表可以用于在其他环境中重新创建相同的库设置,通常通过使用pipinstall-rrequirements.txt命令,其中requirements.txt是由pipfree......
  • Python 实现HTML 转Word
    之前文章分享过如何使用Spire.DocforPython库将Word文档转为HTML格式,反过来,该库也能实现HTML到Word文档的转换。通过代码进行转换,避免了手动复制粘贴费时间,并且可能会出现错误或格式混乱等问题。Spire.DocforPython库能转换一个HTML文件为WordDocx格式,也能直接将HTML字符......
  • Python 设置word编辑限制 或解除word编辑限制
    限制编辑是一种控制文档或文件的访问权限的功能,它可以防止未经授权的用户对文档进行修改或编辑。通过启用编辑限制,您可以设定不同级别的权限,例如只允许查看、只允许评论或只允许特定用户进行编辑。本文将介绍如何使用Spire.DocforPython在Python程序中限制对Word文档的编辑......