匿名函数

匿名函数

烈酒焚心 提交于 2019-12-04 15:34:44
匿名函数 一、有名函数 我们之前定的函数都是有名函数,它是基于函数名使用。 def func(): print('from func') func() func() func() print(func) from func from func from func <function func at 0x10518b268> 二、匿名函数 匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。 lambda x, y: x+y <function __main__.<lambda>(x, y)> res = (lambda x, y: x+y)(1, 2) print(res) 3 三、与内置函数联用 匿名函数通常与max()、sorted()、filter()、sorted()方法联用。 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } 1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。 1 首先将可迭代对象变成迭代器对象 2 res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据 salary_dict = { 'nick': 3000, 'jason':

Python--->匿名函数

荒凉一梦 提交于 2019-12-04 14:19:54
1.匿名函数:简化函数定义 格式:lambda args1,args2,.... : 运算 通常函数写法如下: 匿名函数写法如下: 注意:此时result1实际为函数名,就是通常函数中的def后跟的函数名:add,想要得到返回结果,还需要调用result1(), 若你只打印result1,出现的是函数所以引用的地址,如下图: 输出结果: 2.匿名函数作为参数 输出结果: 3.匿名函数与内置函数的结合使用: max()求列表最大值 一种情况:列表是可迭代对象 语法:max(list) l 输出结果: 打印max(list)即可得到列表最大值 一种情况:列表中元素是字典类型 语法:max(list,key=func) 输入结果: 这里的lambda x:x['a']其实就是通过字典的key,求value的函数 函数max(list1,key=func)工作原理:第一个参数:list1告诉max函数是哪个列表,然后通过key求出的value值再一个一个传给max计算得出最大值 min()求列表最小值 原理同max()一样,详细参考上述max() map() :对列表中每个元素进行遍历,运算,一般用于对列表每个元素进行某些操作,比如+、- 语法:map(func,list) 注意:map()后需要用list()强转化为一个列表 输出结果: 对列表每个值都+2处理,等同于遍历函数,如下:

匿名函数,内置函数,函数递归,模块

六月ゝ 毕业季﹏ 提交于 2019-12-04 13:55:39
匿名函数 1.什么是匿名函数(lambda) 无名字的函数 :冒号左边是参数, 右边是返回值 关键字:lambda : PS: 原因,因为没有名字,函数的调用 函数名 + () 即lambda : 匿名函数需要一次性使用。 注意: 匿名函数单独使用毫无意义, 它必须配合 “内置函数” 一起使用的才有意义。 func = lambda : 1 print(func()) # 匿名函数单独使用毫无意义,因为没有函数名,所以需要赋值给其他变量名 内置函数 1.什么是内置函数 python提前内置的函数 range() # 算是一个生成器print() # 打印返回值len() # 检查序列长度max() # 输出最大值min() # 输出最小值sorted # 默认reverse是False,对可迭代对象从小到大排序mapfiltersorted: 内置函数和匿名函数相结合dict1 = { 'tank': 100, 'egon': 500, 'sean': 200, 'jason': 50}# 先遍历dict1里面的值,因为是字典,索引会遍历key,将其赋值x,再通过索引key得到value给sorted排序,最好输出keynew_dict = sorted(dict1,key = lambda x:dict1[x],reverse=True) print(new_dict)​

Scala中的函数高级使用

拜拜、爱过 提交于 2019-12-04 12:08:32
1.偏函数 1.基本介绍 在对符合某个条件,而不是所有情况进行逻辑操作时,使用偏函数是一个不错的选择 将包在大括号内的一组case语句封装为函数,我们称之为偏函数,它只对会作用于指定类型的参数或指定范围值的参数实施计算,超出范围的值会忽略(未必会忽略,这取决于你打算怎样处理) 偏函数在Scala中是一个特质PartialFunction 2.快速入门 给定集合val list = List(1, 2, 3, 4, "abc") ,要求将集合list中的所有数字+1,并返回一个新的集合,要求忽略掉非数字 的元素,即返回的 新的集合 形式为 (2, 3, 4, 5) 方式1:使用map和filter object exercise_002 { def main(args: Array[String]): Unit = { val list = List(1, 2, 3, 4, "abc") //思路1,使用map+fliter的思路 def f1(n:Any): Boolean = { n.isInstanceOf[Int] } def f2(n:Int): Int = { n + 1 } def f3(n:Any): Int ={ n.asInstanceOf[Int] } val list2 = list.filter(f1).map(f3).map(f2) println(

匿名函数和内置函数

。_饼干妹妹 提交于 2019-12-04 11:42:24
匿名函数 匿名函数就是没有名字的函数 lambda:1 PS:冒号左边时参数,右边是返回值 因为没有名字,而函数的调用就是 通过函数名+() 的 匿名函数 单独使用毫无意义 ,它是 配合内置函数一起使用 匿名函数需要 一次性使用 内置函数 python内部提供的内置方法 max:最大值 max(可迭代对象) min:最小值 min(可迭代对象) l1 = [1, 2, 3, 4, 5] # 打印出l1列表中最大的值 print(max(l1)) # 打印出l1列表中最小的值 print(min(l1)) 上边匿名函数中说道能和内置函数一起使用,让我们来看一下 dict1 = { 'tank':500, 'sean':400, 'egon':600 } print(max(dict1,key= lambda x:dict1[x])) print(min(dict1,key= lambda x:dict1[x])) sorted:排序,默认升序(从小到大) l1 = [6, 1, 2, 3, 4, 5] # 给l1从小到大排序 print(sorted(l1)) 他还有个参数reverse:反转(倒序)它的默认参数是False reverse True 降序 # 给l1从大到小排序 print(sorted(l1,reverse=True))

python lanbda匿名函数(20)

左心房为你撑大大i 提交于 2019-12-04 11:00:52
在python开发中常规的函数在调用之前都需要先声明,而python还有一种匿名函数,有速写函数的功能并且匿名函数不需要声明也没有函数名字,完全不需要担心函数名冲突,具体的妙用还需要从实战练习中多多积累经验。 一.匿名函数语法: lambda a,b,c:expression 匿名函数有以下几个特点: 1.匿名函数有关键字 lambda 修饰; 2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数; 3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值; # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_lambda.py @Time:2019/10/5 17:48 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ #不带参数的普通函数 def sing_dog(): return True #不带参数的匿名函数 f0 = lambda :True # 无参的匿名函数

PHP 核心特性 - 匿名函数

邮差的信 提交于 2019-12-04 06:57:25
提出 在匿名函数出现之前,所有的函数都需要先命名才能使用 1 function increment($value) 2 { 3 return $value + 1; 4 } 5 6 array_map('increment', [1, 2, 3]); 有的时候函数可能只需要使用一次,这时候使用匿名函数会使得代码更加简洁直观,同时也避免了函数在其他地方被使用 1 array_map(function($value){ 2 return $value + 1; 3 }, [1, 2, 3]); 定义和使用 PHP 将闭包和匿名函数视为同等概念(本文统称为匿名函数),本质上都是 伪装成函数的对象 。 匿名函数的本质是对象,因此跟对象一样可将匿名函数赋值给某一变量 1 $greet = function(string $name){ 2 echo "hello {$name}"; 3 } 4 5 $greet("jack") // hello jack 所有的匿名函数都是 Closure 对象的实例 $greet instanceof Closure // true 对象并没有什么父作用域可言,所以需要使用 use 来手动声明使用的变量, 1 $num = 1; 2 $func = function() use($num){ 3 $num = $num + 1; 4 echo $num;

PHP 核心特性之匿名函数

…衆ロ難τιáo~ 提交于 2019-12-04 00:02:00
提出 在匿名函数出现之前,所有的函数都需要先命名才能使用 1 2 3 4 5 function increment( $value ) { return $value + 1; } array_map ( 'increment' , [1, 2, 3]); 有的时候函数可能只需要使用一次,这时候使用匿名函数会使得代码更加简洁直观,同时也避免了函数在其他地方被使用 1 2 3 array_map ( function ( $value ){ return $value + 1; }, [1, 2, 3]); 定义和使用 PHP 将闭包和匿名函数视为同等概念(本文统称为匿名函数),本质上都是伪装成函数的对象。 匿名函数的本质是对象,因此跟对象一样可将匿名函数赋值给某一变量 1 2 3 4 $greet = function (string $name ){ echo "hello {$name}" ; } $greet ( "jack" ) // hello jack 所有的匿名函数都是 Closure 对象的实例 1 $greet instanceof Closure // true 对象并没有什么父作用域可言,所以需要使用 use 来手动声明使用的变量, 1 2 3 4 5 6 7 $num = 1; $func = function () use ( $num ){ $num =

JavaScript世界的一等公民

谁都会走 提交于 2019-12-03 18:09:44
简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针(function pointer)、代理(delegate)等特殊的方式周折一番。 而在 JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一级函数(First-class Function) 。不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个Function类的实例(instance)。这样的多重身份让JavaScript的函数变得非常重要。 一、JavaScript函数入门级 JavaScript函数像一般语言一样也是遵循先声明后使用的原则,函数名只能包含字母、数字、下划线或$,且不能以数字开头。函数常见的声明方式有以下两种: // 直接声明函数myfunc function myfunc(/* arguments */) { } // 把匿名函数赋值给本地变量myfunc var myfunc = function(/* arguments */) { } 注意,上面两种函数声明方式存在细微的差别

匿名函数(lambda)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-03 15:09:31
匿名函数 lambda(一句话函数) 1.语法: 变量名 = lambda 参数(形参) : 返回值 2.匿名函数的名字叫做 lambda 3.lambda是定义匿名函数的关键字; lambda后面直接加形参,形参加多少都可以,用逗号隔开; 返回值和正常的函数一样,只能返回一个数据类型,可以是任意数据类型; 匿名函数只能写一行,且逻辑结束后直接返回数据. func = lambda a,b: a+b print(func(3, 4)) lst = [lambda i:i*i for i in range(10)] print(lst[2](2)) # 4 lst = [lambda :i*i for i in range(10)] print(lst[2]()) # 81 lst = list(lambda i:i*i for i in range(5)) print(lst[1](4)) # 16 lst = [x for x in (lambda :i**i for i in range(5))] print(lst[2]()) #256 lst得到是10个lambda内存地址组成的列表,形参可以不写,返回值必须写 lst = [] # 1.3拆解 for i in range(10): def func(i): return i*i lst.append(func)