匿名函数

函数进阶-匿名函数

独自空忆成欢 提交于 2019-11-27 19:47:11
一丶有名函数 我们之前定的函数都是有名函数,它是基于函数名使用。 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 = { 'fujiachen': 3000, 'nash': 100000, 'jinyi': 5000, 'langyigang': 2000 } 1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。  1.首先将可迭代对象变成迭代器对象  2.res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据 salary_dict = { 'fujiachen': 3000,

python------lambda(匿名函数)

陌路散爱 提交于 2019-11-27 18:40:14
用普通函数和匿名函数作对比就能很容易发现匿名函数的作用 #普通函数 def add(a,b): return a + b print(add(2,3)) #匿名函数 add = lambda a,b : a + b print(add(2,3)) 匿名函数的命名规则,用lambda做关键字标识,冒号(:)左侧表示函数接收的参数(a,b),冒号(:)右侧表示函数的返回值(a+b) 因为lambda在创建时不需要命名,当我们在传入函数时,直接传入匿名函数更加方便 来源: https://www.cnblogs.com/hyxk/p/11372569.html

python匿名函数的介绍及用途

て烟熏妆下的殇ゞ 提交于 2019-11-27 16:53:15
匿名函数 用lambda能够创建一个匿名函数,这中函数得名于省略了用def声明函数的标准步骤。 语法 lambda [arg1 [,arg2,.....argn]]:expression 如何使用 我们正常定义一个函数时是这样的 def add(a,b): return a+b 使用lambda定义匿名函数是这样的 add = lambda a,b:a+b # 和上面函数功能一样 按正常的调用方式即可。lambda表达式能够接收任何数量的参数但只能返回一个表达式的值。 用途 1.就像上文所述能后够简化代码 2.匿名函数作为参数传递 作为自定义函数的参数传递 def test(a, b, func): result = func(a, b) print(result) func_new = input("请输入一个匿名函数:") # eval()将字符串str当成有效的表达式来求值并返回计算结果。 func_new = eval(func_new) test(11, 22, func_new) """ 输出结果: 请输入一个匿名函数:lambda a,b:a+b 33 """ 作为内置函数的参数传递 例如:将列表中的字典按照指定的关键字进行排序 stus = [ {"name":"zhangsan", "age":18}, {"name":"lisi", "age":19}, {

scala之函数式编程

杀马特。学长 韩版系。学妹 提交于 2019-11-27 15:10:53
1、偏函数 ① 基本介绍 在 对符合某个条件,而不是所有情况进行逻辑操作时 ,使用偏函数是一个不错的选择 ② 示例 给你一个集合val list = List(1, 2, 3, 4, “abc”) ,请完成如下要求: 将集合list中的所有数字+ 1,并返回一个新的集合 要求忽略掉 非数字 的元素,即返回的 新的集合 形式为 (2, 3, 4, 5) object PartialFunDemo02 { def main(args: Array[String]): Unit = { //使用偏函数解决 val list = List(1, 2, 3, 4, "hello") //定义一个偏函数 //1. PartialFunction[Any,Int] 表示偏函数接收的参数类型是Any,返回类型是Int //2. isDefinedAt(x: Any) 如果返回true ,就会去调用 apply 构建对象实例,如果是false,过滤 //3. apply 构造器 ,对传入的值 + 1,并返回(新的集合) val partialFun = new PartialFunction[Any,Int] { override def isDefinedAt(x: Any) = { println("x=" + x) x.isInstanceOf[Int] } override def

Day14之列表推导式到匿名函数

爷,独闯天下 提交于 2019-11-27 06:09:57
今天早上六点多起来妙妙,然后继续睡,眼睛一闭一睁八点零六,炸毛了,弹射起步,十分钟全部搞定,滑滑板来到教室,太赶了,让我一天的状态都是懵的,这种感觉真的太难受了,困,不必说,站起来也听不进去,这导致了我今天的听课效率比国家人均GDP都低。然后老师讲课的时候会问,这个听懂的举手 即使我没听懂,我还是举手了 根本没跟上啊。。。。 好了 今天的打气流程 。。。。。 今日洗脑金句:加油,最后悔的事不是失败,而是“你本可以”。 三元表达式 dog_name = 'crazy_dog1' print('疯狂舔🐕') if dog_name == 'crazy_dog' else print('666') 这个是什么意思,其实和原来的逻辑判断一样,只不过,这个逼格更高,但是不推荐,因为用的人少,而且大家都看不懂,公司就会把你开了,找一个写代码让人看的懂的程序员来。 那么这句的意思是什么,就是如果 dog_name == ‘crazy_dog' ,就打印疯狂舔狗,不然的话就打印666。 不过你们可以别听我的,尽管去用,要知道,你写的代码如果只有你自己看的懂,你就是公司不可或缺的员工,如果你的bug很多,不停地改,公司就会觉得你很牛逼,很能改bug。 所以放手去做吧,工作可以再找,被磨平的棱角一去不复返! 列表推导式 别去管这个原理,根本就是找罪受。没必要,也不用。 lt = [] for i in

Lambda 表达式

二次信任 提交于 2019-11-27 02:26:05
前言 前片文章讲到,使用匿名类来表示不同的行为并不令人满意:代码十分啰嗦,这会影响程序 员在实践中使用行为参数化的积极性。在本章中,我们会教给你Java 8中解决这个问题的新工 具——Lambda表达式。它可以让你很简洁地表示一个行为或传递代码。现在你可以把Lambda 表达式看作匿名功能,它基本上就是没有声明名称的方法,但和匿名类一样,它也可以作为参 数传递给一个方法。 本章的行文思想就是教你如何一步一步地写出更简洁、更灵活的代码。 Lambda 管中窥豹 可以吧Lambda表达式简单的理解为可以可以传递匿名函数的一种形式:它没有名称,但是有参数列表,函数主体,返回类型,甚至还可以有一个可以抛出异常的函数列表. 匿名:我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多! 函数: 我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。 传递:Lambda表达式可以作为参数传递给方法或存储在变量中. 简洁:无需像匿名类那样写很多模版代码. 在前面的讲解中,我们写过一个简单的Lambda表达式 可以看到,Lambda表达式有三个部分: 参数列表:这里它采用了 Comparator 中 compare 方法的参数,两个 Apple 。 箭头:把参数和函数主题分开.

内置函数和匿名函数

非 Y 不嫁゛ 提交于 2019-11-26 20:27:49
楔子 在讲新知识之前,我们先来复习复习函数的基础知识。 问:函数怎么调用? 函数名() 如果你们这么说。。。那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题。。。 来你们在自己的环境里打印一下自己的名字。 你们是怎么打的呀? 是不是print('xxx'),好了,现在你们结合我刚刚说的函数的调用方法,你有没有什么发现? 我们就猜,print有没有可能是一个函数? 但是没有人实现它啊。。。它怎么就能用了呢? 早在我们“初识函数”的时候是不是就是用len()引出的? 那现在我们也知道len()也是一个函数,也没人实现,它好像就自己能用了。。。 之前老师给你讲你可以这样用你就用了,那你有没有想过像这样直接拿来就能用的函数到底有多少? 内置函数 接下来,我们就一起来看看python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了 68个内置函数 。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢? Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next()

一文掌握 Lambda 表达式

非 Y 不嫁゛ 提交于 2019-11-26 18:22:12
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。 1. 概述 Java 8 引入的 Lambda 表达式的主要作用就是简化部分的写法。 能够使用 Lambda 表达式的一个重要依据是必须有相应的 函数接口 。所谓函数接口,是指内部有且仅有一个抽象方法的接口。 Lambda 表达式的另一个依据是 类型推断机制 。在上下文信息足够的情况下,编译器可以推断出参数表的类型,而不需要显式指名。 2. 常见用法 2.1 无参函数的简写 无参函数就是没有参数的函数,例如 Runnable 接口的 run() 方法,其定义如下: @FunctionalInterface public interface Runnable { public abstract void run(); } 在 Java 7 及之前版本,我们一般可以这样使用: new Thread(new Runnable() { @Override public void run() { System.out.println("Hello"); System.out.println("Jimmy"); } }).start(); 从 Java 8 开始

JavaScript学习

萝らか妹 提交于 2019-11-26 18:10:53
一、JavaScript 简介 一、JavaScript语言的介绍:JavaScript是 基于对象和原型 的一种 动态、弱类型 的 脚本语言 二、JavaScript语言的组成: JavaScript是由核心语法(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)组成的 三、JavaScript语言的应用: 实现页面表单验证以及页面交互特效,基于Node.js技术进行服务器端编程等 二、JavaScript ECMAScript 一:基础语法 一:变量 1. 变量的声明 1. var变量:var 变量名 = 值; 2. let变量:let 变量名 = 值; 3. const变量:const 变量名 = 值; 2. 变量的作用域 1. 全局作用域:代码中任何地方都能访问到 2. 局部作用域:在固定的代码片段内可访问到 3. 变量提升:变量在声明之前就访问,var会使用默认值undefined,而let会直接报错 4. var、let、const区别 二:运算符 1. 算数运算符:加(+),减(-),乘(*),除(/),求余(%) 2. 赋值运算符:=,+=,-=,*=,%= 3. 关系运算符:>,<,>=,<=,==(只比较值),!=,===(值和数据类型都比较) 4. 逻辑运算符:[&&,||](只有左侧满足才计算右侧),!,[&,|](不管左侧结果如何

Python 内置函数补充匿名函数

早过忘川 提交于 2019-11-26 17:43:10
Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名函数定义:使用 lambda 来创建匿名函数 匿名函数1. 没有名字 2:函数体自带return 匿名函数 def func(x,y,z=1): return x+y+z print(lambda x,y,z=1:x+y+z) function <lambda> at 0x0000000003469488> 匿名函数也是一个函数对象,匿名函数赋值给一个变量,再利用变量来调用该函数 f=lambda x,y,z=1:x+y+z print(f) print(f(1,2,3)) 匿名函数的应用场景:应用于一次性的场景,临时使用 2、匿名函数结合使用内置函数的用法 max,min,sorted,map,reduce,filter的用法 字典的运算:最小值,最大值,排序 salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':2000 } print(max(salaries)) # 默认比较key值大小 print(max(salaries.values())) # 比较values值 print(max