匿名函数、函数作为变量
"""
匿名函数: 本质函数函数,以另一种简单的方式来声明
匿名函数的声明:
lombda 参数列表:返回值 ---结果是一函数变量
lambda:声明匿名函数的关键字
"""
练习:写一个函数计算两个数的和
输出:
练习;
输出:
"""
声明一个函数就是在声明一个变量
函数名可以作为变量来使用。可以打印,可以复制,可以作为函数的参数,可以作为函数的返回值。
"""
输出;
function func1 at 0x001FC660 class 'function'
函数名func1可以当成变量使用
输出;
将函数func1赋值给变量a,这个时候a就是一个函数
输出:
将函数func1作为列表的元素
输出:
输出;
3.将函数作为函数的返回值
写一个函数有多个参数,要求传入一个运算符号(+,—,*,,)
输出:
【JS】匿名函数
本节讲解 3 种原生JS的匿名函数。
匿名函数又叫立即执行函数。
因为是匿名的,所以不能被调用。
因为不能被调用,所以不立即执行的话就没意义了。
因为立即执行,所以在执行完之后就会被销毁。
***种(常用)
( function(){…} )()
第二种(常用)
( function(){…}() )
第三种(不常用)
~function(){…}()
前两种写法,返回值都是正常的。
第三种写法的返回值会比较奇怪,所以很少用。
***种写法
在控制台输出 1
第二种写法
在控制台输出 2
第三种写法
在控制台输出 -4
在控制台输出2
假设第三种写法的返回值是未知数 x。
则得到的返回值是:-(x + 1)
匿名函数
在Python中使用lambda创建匿名函数,所谓的匿名,是指不需要为这个函数指定一个名称.
匿名函数lambda只是一个表达式,函数体比def简单的多.
labmda arg1,arg2:expression
使用匿名函数创建常用的函数
无参数匿名函数
t = lambda : True
t() - True
等价于下面的def定义的函数
def func(): return True
func() - true
带参数匿名函数
lambda x : x 3 求x的三次方
lambda x,y=2:x y 参数允许拥有默认值
匿名函数的调用
直接赋值给一个变量,然后跟普通的函数一样调用它
c = lambda x,y,z: x * y * z
c(2,3,4)
24
lambda返回一个元组
a = lambda *z : z
a('abc','def')
('abc','def')
返回一个字典
d = lambda **dict:dict
d({"a":2})
{"a":2}
lambda直接后面传参
(lambda x,y:x+y)(100,200)#300
大量的实例
字符串联合,有默认值
x = (lambda x = 'boo',y='too',z='zoo':x+y+z)
x(abc)
和列表联合使用
L = [lambda x : x 2,lambda x:x 3,lambda x:x**4]
for f in L;
print(f(2)) # 4,8,16
和字典结合使用
key = 'B'
dic = {'A':lambda:2 2,'B':lambda:2 4,'C':lambda:2 *8}
dic key # 8
求最小值
lower = lambda:x,y:x if x y else y
lower(2,5) # 2
和map以及list联合使用
import sys
showall = lambda x : list(map(sys.stdout.write,x))
showall(['Jerryn','Sherryn','Alicen'])
lambda和map联合使用
out = lambda *x : sys.out.write(' '.join(map(str,x)))
out('This','is','a','book!n')
This is a book!
判断字符串是否以某个字母开头
print(lambda x : x.startswith('b')('Bob')) # false
lambda 和 map,filter联合使用
squares = map(lambda x : x**2,rang(10))
filters = filter(lambda x: x5 and x 50,squares)
lambda和sorted联合使用
death = [('James',32),('Fioman',22),('Yasanlun',35)]
list = sorted(death,key=lambda x : x[1])
求2-50之间的素数
nums = range(2,50 + 1)
for i in nums:
nums = filter(lambda x : x ==i or x %i,nums)
求两个列表元素的和
a = [1,2,3,4]
b = [5,6,7,8]
sum = map(lambda x,y:x+y,a,b)
求字符串中每个单词的长度
sentence = "Welcom To Beijing!"
words = sentence.split()
lengths = map(lambda x : len(x),words)
什么叫匿名函数
匿名函数 出现在 matlab 中。它是matlab中定义的一种函数形式。
基本内容
匿名函数不以文件形式驻留在文件夹上;他的生成方式最简捷,可在指令窗或任何函数体内通过指令直接生成。
匿名函数的作用:主要实现自己定义matlab中的函数,从而扩大函数的使用功能
和内联函数(inline)相比,匿名函数的优越性在于可以直接使用workspace中的变量,不必申明,非常适合嵌入到M文件中。
%例10-25 匿名函数举例。
%本例列举3个匿名函数的例子,分别有0个、1个和两个输入参数。
%首先介绍没有输入参数的匿名函数,只需用空格代替arglist即可。例如,编写求解当前时间的匿名函数如下所示。
t = @() datestr(now);
t() %函数的调用
ans =
14-Sep-2004 20:22:50
%值得注意的是,调用该函数时,括号不能省略,否则, MATLAB 7.1将对程序不予计算,如下所示。
t
t =
@() datestr(now)
%再介绍有一个输入参数的匿名函数,该函数用于求所输入参数的平方,编制并运行程序如下所示。
sqr = @(x) x.^2
sqr =
@(x) x.^2
sqr(12)
ans =
144
%最后介绍有两个输入参数的匿名函数,用户可以由此推导有多个参数的匿名函数,编制并运行程序如下所示。
sumAxBy = @(x, y) (14*x + 41*y)
sumAxBy =
@(x, y) (14*x + 41*y)
sumAxBy(3,7)
ans =
329
注意这些定义过程,其中@这个标志符是很重要的。
匿名函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于匿名函数和普通函数的区别、匿名函数的信息别忘了在本站进行查找喔。