python 把函数作为参数 ---高阶函数

Python使用函数作为参数 如果要调用的方法的入参个数不确定,可以使用args或**args。但是一定要把args放到最后面。当调用的方法有参数的时候,需要将参数也传进去,调用的时候使用[方法名(参数1,参数2)]使用函数当做入参,函数本身包含不确定个数的入参。 阅读详情
AI摘要

本文详细介绍了如何在Python中将函数作为参数传递给其他函数,包括无参数、带参数及不定数量参数的情况,展示了装饰器的概念及其应用,同时通过实例解释了高阶函数的使用。

在实际使用中,我们有时希望将函数作为参数传递给另一个方法使用。
比如装饰器实际就是函数调用函数

举个例子,我想传递在调用方法之前打印一下时间:

使用函数当做入参
那就可以把方法名A当做入参传递给方法B,调用的时候直接用【方法名()】来调用方法内容

>>> import time
>>> def run(func):
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
	func()
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

	
>>> def test():
	print("我是个测试文件")

	
>>> run(test)
2019-05-10 11:46:53
我是个测试文件
2019-05-10 11:46:53

使用函数当做入参,函数本身包含参数
如果要调用的方法A有参数怎么办呢?在定义B方法的时候,也将参数传进去,然后调用方法的时候使用【方法名(参数1,参数2)】

#将方法名和参数都传递给调用的方法
>>> def run(func,a,b):
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
	func(a,b)
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))


>>> def plus(a,b):
	print(a+b)

	
>>> run(plus,3,5)
2019-05-10 11:51:08
8
2019-05-10 11:51:08

使用函数当做入参,函数本身包含不确定个数的入参
如果要调用的方法的入参个数不确定,可以使用args或**args。但是一定要把args放到最后面

#有时候调用的方法的入参个数不确定,可使用*args表示。
#但是注意一定要把*args放到后面,因为run()也有可能入参
>>> def run(func,a,*args):
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
	print(a)
	print(*args)
	print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

	
>>> def plus(*args):
	temp=0
	for i in args:
		temp=temp+i
	print(temp)

	
>>> run(plus,100,1,2,3,4)
2019-05-10 11:55:14
100
1 2 3 4
2019-05-10 11:55:14
>>> 

把函数作为参数
在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数:

def add(x, y, f):
    return f(x) + f(y)
如果传入abs作为参数f的值:

add(-5, 9, abs)
根据函数的定义,函数执行的代码实际上是:

abs(-5) + abs(9)
由于参数 x, y 和 f 都可以任意传入,如果 f 传入其他函数,就可以得到不同的返回值。

任务
利用add(x,y,f)函数,计算:

import math
def add(x, y, f):
    return f(x) + f(y)
print add(25, 9, math.sqrt)

结果为8.0

参考:
https://www.cnblogs.com/meitian/p/6756665.html
https://www.cnblogs.com/superxuezhazha/p/5714949.html

Python高级语法:函数进阶作为参数传递、作为返回值 在Python中,函数可以作为参数传递给另一个函数,也可以作为返回值返回给调用者。函数作为参数传递: 在Python中,函数作为参数传递的方式有两种,一种是直接将函数名作为参数传递,另一种是使用lambda表达式定义一个匿名函数作为参数。总结: 函数作为参数传递和函数作为返回值是Python中函数进阶的两个重要概念。函数作为返回值: Python中的函数可以返回另一个函数作为结果。在上面的示例中,我们使用lambda表达式定义了一个匿名函数作为参数传递给。函数,它接受一个函数和一个参数,并调用该函数两次。 阅读详情

相关推荐

07.Python函数方法(函数的定义、参数、注释说明+递归+lambda+高阶函数+内置高阶函数+代码示例)

Python函数的定义、参数、注释说明,递归函数说明,lambda函数的使用,高阶函数的基本用法,Python内置高阶函数map、filter、reduce,以及对应的代码示例

qq_38978263的博客 570

【Python】函数进阶 ③ ( 函数作为参数传递 )

一、函数参数传递类型 二、代码示例 - 函数参数传递类型

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 3282

Python函数(结构、返回值、参数、参数传递方式、函数式编程、高阶函数、闭包、装饰器)

文章目录1. 初识Python中的函数1.1 函数的结构1.2 函数的返回1.3 函数的参数1.4 参数传递的处理1.5 变量作用域(L->E->G->B)2. 各种函数2.1 匿名函数lambda2.2 偏函数2.3 高阶函数3. 闭包4. 装饰器 1. 初识Python中的函数 1.1 函数的结构 1.2 函数的返回 1.3 函数的参数 1.4 参数传递的处理 1.5 变量作用域(L->E->G->B) 2. 各种函数 2.1 匿名函数lambda 2.2 偏函数 2

herosunly的博客 2万+

Python---闭包、函数作为参数传递、装饰器-----进阶必备,不必再为弄不清而烦恼

都说Python装饰器好用,那么Python 装饰器是什么呢?下面让我们来解开它的神秘面试,深层次的了解并学会使用吧! 首先Python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。 这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌“原“”函数的函数。 ** 什么是闭包 ** # 闭包 def fun1(): name="想学" def fun2(): pri

qq_46906413的博客 2731

车辆动力学从入门到进阶之路(传统篇)

新手如何入门车辆动力学开发领域,本文为您引路!

CrazyRabbit的博客 1万+

得利捷datalogic扫码枪调试说明

针对得利捷datalogic扫码枪快速调试并,可以根据详细步骤设置扫码枪,并配有tcp调试助手辅以验证,以达到快速调试完成扫码枪的工作。

Conway510的博客 1万+

python 函数的参数

函数的参数分为形式参数和实际参数:简称形参和实参在定义函数阶段依次填写的参数名字,称为:形式参数(也称为形参)作为函数的输入,以便在函数内部进行处理。而在调用函数阶段,函数名括号中需要传入具体的值作为实际参数(也称为实参),这些实参会被赋值给函数中的形参,并作为函数的输入。实参(值)会赋值给形参(变量名)。实参与形参的这种绑定关系只在函数调用时生效,在调用结束后解除。形参可以看成是变量名,实参可以看成是变量值他们两个在函数调用阶段临时绑定关系,形参=实参那就是变量名。

王献运的博客 5433

SAP CO-PA获利分析避坑指南:从数据采集到报表设计的5个关键步骤

本文深入解析了SAP CO-PA获利分析模块从数据采集到报表设计的完整流程。文章重点剖析了数据源头、特征派生、获利段设计等关键步骤,并对比了基于账户与基于成本核算两种模式的差异,特别强调了在S/4HANA时代的选择与常见陷阱,旨在帮助企业构建可靠、可执行的盈利分析体系。

flink9streamer的博客 827

python高阶函数 —— 内置高阶函数、返回值为函数、函数作为参数、闭包

文章目录一、什么是高阶函数?二、 python 内置高阶函数:map、filter、reduce、sort、sorted2.1、 filter() 过滤出符合条件的元素2.2、 map() 对所有元素做指定的操作2.3、 reduce() 合并2.4、 sort() 排序2.5、 sorted() 排序三、 闭包——也是高阶函数3.1、 形成闭包的必要条件 一、什么是高阶函数? 高阶函数:一个函...

猎人在吃肉 1260

Mellanox ASAP2技术揭秘:如何通过硬件卸载提升OVS性能?

本文深入解析Mellanox ASAP2技术如何通过硬件卸载显著提升Open vSwitch(OVS)性能。通过将数据平面操作转移到ConnectX智能网卡处理,ASAP2实现了10倍吞吐量提升和90%延迟降低,同时大幅减少CPU占用。文章包含技术原理剖析、实战配置指南及性能对比数据,为网络虚拟化优化提供关键解决方案。

weixin_30335575的博客 374

从零到精通:BLDC电机驱动电路详解与设计思路

这套电机驱动电路从核心控制器到反馈采集模块,涉及了BLDC电机驱动的方方面面。每一个模块的设计和选择都需要综合考虑系统需求和实际使用环境。在实际应用中,很多细微的设计改进都会显著影响电机的运行性能。

weixin_43199439的博客 3103

***第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)

重重重点:函数传递、高阶函数、lambda表达式 python进阶

weixin_51996883的博客 306

嵌入式工程师成长之路(3)——PCB设计

带有目的的学:要知道,PCB板子做出来需要我们给厂家哪些东西,我们设计板子的时候,需要遵循哪些设计规范,防止画好也是块废板子。然后再逐步开始学习画板。

云轩阁 8万+

python3 函数定义,参数返回值,lambda函数的使用,高阶函数

Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串...

wywinstonwy的专栏 918

AutoSAR系列讲解 - 总目录

博主想在开始前先讲一下我们的具体安排,这里就以目录加说明的形式展示出来,同时这也可以作为大家学习AutoSAR的参考。由于实践篇需要在很久以后才会更新,所以这里我们先罗列一下理论篇的内容,实践篇等开始更新的时候我再补充上

雪云飞星的博客 49万+

【DaVinci Developer专题】-28-Client Server Port Interface中useArgumentType、useArrayBaseType和useVoid介绍

共7页 目录 1 ImplPolicy = useArgumentType 2 ImplPolicy = useArrayBaseType 3 ImplPolicy = useVoid 4 三者代码差异部分 5 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer

「汽车电子助手」的博客 1502

Python高阶函数详解:掌握函数作为参数与返回值的核心用法

通过掌握高阶函数,开发者能显著提升Python代码的抽象层级与复用能力。A:闭包会捕获外层函数的所有变量引用(注意循环变量可能导致的意外值)函数能接收另一个函数作为参数,或返回一个函数作为结果,该类函数称为。核心优势:代码复用性高、逻辑更抽象、方便扩展功能。一行替代for循环)、内置优化性能更高。sorted函数的高级用法。A:更简洁的表达方式(如。将函数作用于序列每个元素。

燃灯工作室 462

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python函数、高阶函数、装饰器、参数注解、缓存

函数 1. 函数的定义 由若干语句组成的语句块、函数名称、参数列表构成,它是组织代码的最小单元。 完成一定的功能。 函数也是对象,python把函数的默认值放在了属性中,这个属性就伴随着这个函数对象的整个生命周期。 2. 函数的作用 结构化编程是对代码的最基本的&lt;font color = red &gt;封装&lt;/font&gt;,一般按照功...

vampire的博客 338

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python-高阶函数(函数做参数)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34129696的博客 155

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python进阶 - 高阶函数的本质 接收函数作为参数或返回函数

本文深入探讨了Python中的高阶函数(Higher-Order Functions)概念,重点解析了其两大核心特征:接收函数作为参数和返回函数作为结果。通过丰富的代码示例,文章介绍了map()、filter()、reduce()等内置高阶函数的应用场景,并展示了如何利用高阶函数重构冗余代码,实现"策略模式"的抽象化设计。此外,文章还通过动态生成计算器函数和权限控制装饰器的实战案例,演示了高阶函数在闭包和函数工厂模式中的典型应用,帮助读者理解函数式编程的核心思想及其在Python中的实现方式。

千淘万漉虽辛苦,吹尽狂沙始到金 9449

Python函数专题(函数的参数,不定长参数,参数的解包,函数的作用域,命名空间,递归函数,高阶函数及装饰器语法糖写法等)

Part 1 1.函数简介 函数也是一个对象 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用。 语法 def 函数名([形参1,形参2,形参3....]): 代码块 注意: 函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头) print是函数对象 print()是调用函数 2.函数的参数 2.1形参和实参 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值。 实参(实际参数) 指定了形参,那么在调用函数时必须传递实参,

侯小啾技术博客 906

26 Python高阶函数之函数作为参数传入和传出

对Python函数式编程之高阶函数的介绍。

小安的博客 521

Python中函数作为参数的高阶函数demo

# 高阶函数 # 接收函数作为参数,或者将函数作为返回值的函数是高阶函数 # 创建一个列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 定义一个高阶函数 def f(func, l): ''' 将指定列表中的所有数,按规则,保存到一个新的列表中 :param l: :return: ''' ls = [] ...

Romantic_sir的博客 382

python4 函数的参数,变量等等。生成式简单介绍以及python中内置的高阶函数

##########函数的定义 ##写一个函数 def hello(): ##定义一个函数 print('hello1') print('hello2') print('hello3') hello() #调用函数 def sum_2_sum(): ...

weixin_45466471的博客 263

python 函数篇 —— 作用域、参数类型、装饰器、高阶函数

文章目录函数变量和作用域函数的参数解压可迭代对象赋值给多个变量装饰器所需掌握的函数lambdamapreducefiltersortedenumeratezip 函数 变量和作用域 使用函数的两个小习惯: 当要定义的函数比较复杂时,可以对函数的参数和返回值进行注释,注释内容可以是任何形式(参数的类型、作用、取值范围等),如下面代码中的(n:int)和( ->list),当然注释只是方便阅读代码,对程序的执行没有影响; 函数体中使用文档声明,描述函数的相关信息; def fib(n:int)-&gt

Z__legend的博客 322

Python.三.(一)--1. 函数参数与高阶函数

Python 是"对象引用传递"(传的是引用,不是值也不是纯引用)。,由此衍生出灵活的参数机制和以函数为参数/返回值的高阶函数体系。、赋值),但可用条件表达式。常用于临时、简短的函数场景,尤其配合。计算,把多个值归约成一个值(Python3 中需从。口诀:一颗星收位置成元组,两颗星收关键字成字典。之后必须用关键字传入)。都是高阶函数的典型实例。(重新绑定,外部无感)。,可被赋值、传参、返回。应用函数,返回迭代器。

Question_123456的博客 210
上一篇: Python strip()方法
下一篇: python语句中的 end=''是什么意思呢
hellenlee22
博客等级 码龄9年 70粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值