PHP函数(六)-匿名函数(闭包函数)

匿名函数能够临时创建一个没有名称的函数,常用作回调函数参数的值

<?php
	$test = function($a){
		echo "Hello,".$a;
	};
	$test("world");
?>

一定要在匿名函数的结尾处加上分号

执行结果

回调函数将匿名函数做参数

<?php
	function callback($a){
		$a();
	}

	callback(function(){ //声明一个匿名函数并传给callback()函数
		echo "test";
	});
?>

执行结果

引用外部变量

<?php
	function callback($a){
		$a();
	}

	$str = "php";

	callback(function() use ($str){ //通过use关键字来引用外部变量
		echo $str." test";
	});
?>

use引用的为外部变量的副本,要想完全引用,要在前面加上&,如

callback(function() use (&$str){});

原文地址:https://www.cnblogs.com/sch01ar/p/8127882.html

时间: 2024-11-05 16:40:43

PHP函数(六)-匿名函数(闭包函数)的相关文章

函数对象/嵌套和闭包函数

一.函数对象 二.函数嵌套 三.闭包函数 一.函数对象 精髓:可以把函数当成变量去用 1.可以赋值 # func=内存地址 def func(): print('from func') f=func # 函数func赋值给变量f print(f,func) # 打印f和func的内存地址,完全相同 f() # 相当于调用了函数func() 输出: <function func at 0x02F434A8> <function func at 0x02F434A8> from fun

匿名与闭包函数

一.匿名函数写法  最常见的用法: (function() {   alert('water');})(); 当然也可以带参数: (function(o) {     alert(o); })('water'); 想用匿名函数的链式调用?很简单: (function(o) {    alert(o);     return arguments.callee;})('water')('down'); 二.匿名函数后面小括号表示执行1.没有弹出框 <script language="javas

python 函数的作用域,闭包函数的用法

一.三元表达式 if条件成功的值    if  条件   else else条件成功的值 #if条件成立的结果 if 条件 else else条件成立的结果 # a = 20 # b = 10 # c = 5 if a>b else 10 # print(c) 二.函数的命名空间 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input,print,str,list,tuple...它们都是我们熟悉的,拿过来就可以用的

python_005_匿名函数,闭包函数,递归函数

一.匿名函数 #匿名函数:帮助开发人员完成简单的业务处理逻辑"""语法lambda 参数1, 参数2, 参数3...: 函数体注意函数体内部代码只能存在一句表达式,如果该表达式计算之后有结果,此时该结果作为匿名函数的返回值返回给外界""" #fun1 = lambda x, y, **kwargs: max(x, y)#num = fun1(1,2)#print(num) 二.闭包函数 #闭包函数"""两个函数A,B

(十六)闭包函数

函数嵌套+名称空间+函数对象 什么是闭包函数 条件1. 定义在函数内的函数 条件2. 该函数体代码包含对该函数外层作用域中名字的引用. 注意:函数外层指的不是全局作用域 满足两个条件,该函数称为闭包函数 基本结构如下 def outter(): x=1 def inner(): #函数嵌套 print(x) return inner() #函数对象 outter( ) #执行outter,本质上是执行intter() f=outter() def f1(): x=11111111111111 #

python学习第十二天:闭包函数与装饰器

闭包函数: 什么是闭包函数: 闭指的是定义在一个函数内部 包指的是该函数包含对外部作用域(非全局作用域)名字的引用 def counter(): n=0 def incr(): nonlocal n x=n n+=1 return x return incr c=counter() print(c()) 闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域 装饰器 1.什么是装饰器 就目前来看:装饰器就是定义一

CSIC_716_20191112【闭包函数和装饰器】

闭包函数 什么是闭包函数:闭包函数是函数嵌套.函数对象.名称空间和作用域的集合体. 闭包函数必须在函数内部定义,闭包函数可以引用外层函数的名字. # _*_ coding: gbk _*_ # @Author: Wonder def outer(): def inner(): #代码体 return inner() outer() # 调用闭包函数 装饰器 什么是装饰器:装饰器本身是一个函数,是在不修改其他函数源代码以及调用方式的前提下,给其他函数增加功能的函数. 装饰器遵循开放闭合原则.即对函

016.Python闭包函数以及locals和globals

一 闭包函数 内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,这个内函数叫做闭包函数 1.1 闭包函数语法 def outer(): a = 5 def inner(): print(a) return inner 对比正常的局部变量 局部变量的生命周期最短,在调用结束之后,立即释放. def func(): a = 5 print(a) func() print(a) 执行 1.2 闭包函数的定义 def bibao(): people = "孙仲谋" def

golang 函数二 (匿名函数和闭包)

匿名函数就是没有定义函数名称的函数.我们可以在函数内部定义匿名函数,也叫函数嵌套. 匿名函数可以直接被调用,也可以赋值给变量.作为参数或返回值.比如: func main(){     func(s string){     //直接被调用         println(s)     }("hello gopher!!!")     /*     func(s string){     //未被调用         println(s)     }     */ } func mai