当函数很简单的时候采用匿名函数很方便.…
匿名函数 关键字lambda表示匿名函数,冒号前面的x表示函数参数匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))[1, 4, 9, 16, 25, 36, 49, 64, 81] 可以把匿名函数赋值给一个变量,再利用变量来调用该函数:>>> f = lambda x: x * x>>> f<…
Python 函数式编程 2 返回函数 返回函数的意思就是:函数作为返回值.(高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.) 举个例子:实现一个可变参数的求和. 正常的函数: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 返回函数的函数,其实和上面的函数很像: def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n r…
高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function abs> >>> f = abs #函数本身也可以赋值给变量 >>> f #变量可以指向函数 <built-in function abs> >>> f(-10) #变量调用函数 10 函数名也是变量 >>> abs = 1…
一.匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数lambda x: x * x实际上就…
一.熟练掌握装饰器的原理 (在装饰器学习的过程中,查了看了很多资料,个人感觉走了很多的弯路,这个笔记,分享我的理解,希望能帮助到一些人.本文对装饰器的描述,侧重点是条理与逻辑思路,想通过从无到有的方式,描述一个理解的过程,重点在step by step 更快的理解这个东西) 需要理解装饰器的两大组成,使用装饰器时能解决不确定长度的形参传递.函数返回值及条件判断的场景. 1.使用装饰器的目的及原则 目的:为原来的函数增加一些新的功能,如日志输出,运行时间计算,登录退出等. 实现的原则(两点): (…
装饰器 1.速查笔记 #-- 函数装饰器:是它后边的函数的运行时的声明 由@符号以及后边紧跟的"元函数"(metafunction)组成 @staticmethod def smeth(x): print(x) # 等同于: def smeth(x): print(x) smeth = staticmethod(smeth) 定义:在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator) 经典示例: # -*- coding:utf-8 -*- import time…
在评论页面中index.php中 [ 'attribute'=>'status', 'value'=>'status0.name', 'filter'=>Commentstatus::find()->select(['name','id'])->orderBy('position')->indexBy('id')->column(), 'contentOptions'=>function($model){ //此处使用匿名函数来判断状态,设定状态的样式 re…
;(function(){ alert('啥也没做');})(); 会弹框. 这是个匿名函数.最前面的分号可以去掉,仅仅是在代码压缩时防止出错. 该函数可以拆解成非匿名函数: var a= function(){ alert('啥也没做');} ;(a)(); 去掉分号和括号,拆解的函数实际是: a(); 分号后面的那个包含a的括号其实按道理也是可以去掉的,但是语法解析器会报错: ;function(){ alert('啥也没做');}(); VM243:2 Uncaught SyntaxErr…
1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) total = 1 这种情况也会报错: total = 0 def run(): total += 1 # 等效total = total + 1 原因是函数内部对total有定义后,解释器会认为total是局部变量,但是内部执行时,却发现total还没定义. 解决办法是将total声明为全局变量: to…