精华内容
下载资源
问答
  • 匿名函数

    2020-06-22 19:04:39
    形参列表 - 形参1,形参2,…的形式存在 : - 固定写法,没有缩进没有换行 返回值 - 写任何有结果的表达式 定义一个匿名函数求两个数的和 2)调用匿名函数:函数(实参列表) 匿名函数的本质就是类型是function的...

    匿名函数

    1. 什么是匿名函数
      匿名函数本质上还是函数普通函数中,除了定义的语法,其他全部适用于匿名函数
      1)定义匿名函数的语法:
      lambda 形参列表:返回值
      说明:
      lambda - 关键字,固定写法
      形参列表 - 形参1,形参2,…的形式存在
      : - 固定写法,没有缩进没有换行
      返回值 - 写任何有结果的表达式
      定义一个匿名函数求两个数的和
      2)调用匿名函数:函数(实参列表)
      匿名函数的本质就是类型是function的数据,普通数据能做的,匿名函数都能做
    x = lambda num1,num2:num1 + num2
    print(x(190,890))
    list = [10,'abc',lambda num1,num2 : num1 + num2]
    print(list[0 + 10 - 100])
    print(list[1].join(['10','20','30']))
    print(list[2](1,3))

    ​ 练习一:写一个匿名函数来判断指定的年龄是否成年,根据情况返回 True/False

    a = lambda age :'成年' if age >= 18 else '未成年'
    print(a(19))
    展开全文
  • 示例基本匿名函数是MATLAB语言的强大工具。它们是本地存在的功能,即:在当前工作空间中。但是,它们不像常规函数那样存在于MATLAB路径中,例如在m文件中。这就是为什么它们被称为匿名的原因,尽管它们在工作空间中...

    示例

    基本

    匿名函数是MATLAB语言的强大工具。它们是本地存在的功能,即:在当前工作空间中。但是,它们不像常规函数那样存在于MATLAB路径中,例如在m文件中。这就是为什么它们被称为匿名的原因,尽管它们在工作空间中可以具有类似变量的名称。

    该@运营商

    使用@运算符创建匿名函数和函数句柄。例如,创建sin函数(正弦)的句柄并将其用作f:

    >> f = @sin

    f =

    @sin

    现在f是该sin函数的句柄。就像(在现实生活中)门把手是使用门的一种方式一样,功能把手是使用功能的一种方式。要使用f,参数将传递给它,就像它是sin函数一样:

    >> f(pi/2)

    ans =

    1

    f接受sin函数接受的任何输入参数。如果sin将是一个接受零个输入参数的函数(它不接受,但其他人接受,例如该peaks函数),f()则将在没有输入参数的情况下调用它。

    自定义匿名功能

    一个变量的匿名函数

    像sin上面的示例一样,创建现有函数的句柄显然没有用。在该示例中,这是多余的。但是,创建匿名函数来执行自定义操作很有用,否则这些匿名函数将需要重复多次或为其创建单独的函数。作为一个接受一个变量作为输入的自定义匿名函数的示例,将信号的正弦和余弦平方求和:

    >> f = @(x) sin(x)+cos(x).^2

    f =

    @(x)sin(x)+cos(x).^2

    现在f接受一个称为的输入参数x。这是(...)在@运算符后直接使用括号指定的。f现在是一个匿名函数x:f(x)。通过将值传递x给使用f:

    >> f(pi)

    ans =

    1.0000

    值的向量或变量也可以传递给f,只要它们在以下范围内以有效方式使用f:

    >> f(1:3) % pass a vector to f

    ans =

    1.1334    1.0825    1.1212

    >> n = 5:7;

    >> f(n) % pass n to f

    ans =

    -0.8785    0.6425    1.2254

    一个以上变量的匿名函数

    以相同的方式,可以创建匿名函数来接受多个变量。接受三个变量的匿名函数的示例:

    >> f = @(x,y,z) x.^2 + y.^2 - z.^2

    f =

    @(x,y,z)x.^2+y.^2-z.^2

    >> f(2,3,4)

    ans =

    -3

    参数化匿名函数

    工作空间中的变量可以在匿名函数的定义中使用。这称为参数化。例如,要c = 2在匿名函数中使用常量:

    >> c = 2;

    >> f = @(x) c*x

    f =

    @(x)c*x

    >> f(3)

    ans =

    6

    f(3)使用变量c作为参数与提供的相乘x。请注意,如果此时将的值c设置为其他值,则将f(3)其调用,结果将不会有所不同。的值c是创建匿名函数时的值:

    >> c = 2;

    >> f = @(x) c*x;

    >> f(3)

    ans =

    6

    >> c = 3;

    >> f(3)

    ans =

    6

    匿名函数的输入参数未引用工作空间变量

    请注意,将工作空间中的变量名称用作匿名函数的输入参数之一(即,使用@(...))将不会使用这些变量的值。相反,它们在匿名函数的范围内被视为不同的变量,即:匿名函数具有其专用工作区,其中输入变量从不引用主工作区中的变量。主工作区和匿名函数的工作区不了解彼此的内容。一个例子来说明这一点:

    >> x = 3 % x in main workspace

    x =

    3

    >> f = @(x) x+1; % here x refers to a private x variable

    >> f(5)

    ans =

    6

    >> x

    x =

    3

    的值x从主工作空间没有内使用f。此外,在主工作区x中保持不变。在的范围内f,@运算符后括号之间的变量名称独立于主要工作空间变量。

    匿名函数存储在变量中

    匿名函数(或更准确地说,指向匿名函数的函数句柄)与任何其他值一样存储在当前工作空间中:存储在变量(如上所示),单元格数组({@(x)x.^2,@(x)x+1})或甚至属性(如h.ButtonDownFcn交互式图形)。这意味着匿名函数可以像其他任何值一样对待。将其存储在变量中时,它在当前工作空间中具有名称,可以像保存数字的变量一样进行更改和清除。

    换句话说:函数句柄(无论是@sin形式还是匿名函数)只是一个可以存储在变量中的值,就像数值矩阵一样。

    进阶使用

    将函数句柄传递给其他函数

    由于函数句柄被视为变量,因此可以将它们传递给接受函数句柄作为输入参数的函数。

    一个示例:在m文件中创建一个接受函数句柄和标量数字的函数。然后,通过传递3给函数句柄来调用它,然后将标量数字添加到结果中。返回结果。

    内容funHandleDemo.m:

    function y = funHandleDemo(fun,x)

    y = fun(3);

    y = y + x;

    将其保存在路径中的某个位置,例如在MATLAB的当前文件夹中。现在funHandleDemo可以如下使用,例如:

    >> f = @(x) x^2; % an anonymous function

    >> y = funHandleDemo(f,10) % pass f and a scalar to funHandleDemo

    y =

    19

    另一个现有函数的句柄可以传递给funHandleDemo:

    >> y = funHandleDemo(@sin,-5)

    y =

    -4.8589

    请注意,如何@sin快速访问sin函数而无需先使用将该函数存储在变量中f = @sin。

    将bsxfun,cellfun和类似的功能与匿名函数一起使用

    MATLAB具有一些内置函数,这些函数接受匿名函数作为输入。这是用最少的代码行执行许多计算的方法。例如bsxfun,它执行逐个元素的二进制运算,即:它以逐个元素的方式在两个向量或矩阵上应用函数。通常,这将需要使用for-loop,这通常需要预先分配速度。bsxfun加快使用此过程。下面的示例使用tic和演示了此toc功能,这两个函数可用于计时代码花费的时间。它根据矩阵列的平均值计算每个矩阵元素的差。

    A = rand(50); % 50-by-50 matrix of random values between 0 and 1

    % method 1: slow and lots of lines of code

    tic

    meanA = mean(A); % mean of every matrix column: a row vector

    % pre-allocate result for speed, remove this for even worse performance

    result = zeros(size(A));

    for j = 1:size(A,1)

    result(j,:) = A(j,:) - meanA;

    end

    toc

    clear result % make sure method 2 creates its own result

    % method 2: fast and only one line of code

    tic

    result = bsxfun(@minus,A,mean(A));

    toc

    运行上面的示例将产生两个输出:

    Elapsed time is 0.015153 seconds.

    Elapsed time is 0.007884 seconds.

    这些行来自toc函数,这些函数打印自上次调用tic函数以来经过的时间。

    该bsxfun调用将第一个输入参数中的函数应用于其他两个输入参数。@minus是与减号相同的操作的长名称。@只要已接受A并mean(A)用作生成有意义结果的输入,就可以指定与其他任何函数不同的匿名函数或句柄()。

    特别是对于大型矩阵中的大量数据,bsxfun可以大大加快处理速度。它也使代码看起来更简洁,尽管对于不了解MATLAB或的人来说可能很难解释bsxfun。(请注意,在MATLAB R2016a及更高版本中,许多以前使用的操作bsxfun不再需要它们;它们可以直接运行,在某些情况下甚至可以更快地运行。)A-mean(A)

    展开全文
  • php匿名函数

    2019-09-27 11:32:06
    匿名函数:就是没有名称的函数.匿名函数可以赋值给变量,对象传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调. 闭包:是指在创建时封装周围状态的函数.即使闭包所在的...

    PHP匿名函数和闭包使用的句法与普通函数相同,但匿名函和闭包数其实是伪装成函数的对象.

    匿名函数:就是没有名称的函数.匿名函数可以赋值给变量,对象传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调.

    闭包:是指在创建时封装周围状态的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在.

    注意:理论上讲,闭包和匿名函数是不同的概念. 不过,PHP将其视作相同的概念.

    匿名函数的语法:

    1 $func = function(){
    2     
    3 };//带结束符

    示例demo:

    1 $func = function($param){
    2     echo($param);
    3 };
    4 $func('hello world');

     

    实现闭包?

    将匿名函数在普通函数中当做参数传入,也可以被返回.这就实现了一个简单的闭包.

    示例demo:

    //(示例1):函数里定义一个匿名函数,并且调用它
    function content(){
        $func = function($param){
            echo $param;
        };
        $func('hello world');
    }
    content();

     

     

     

    //(示例2):函数中把匿名函数返回,返回后调用它
    function content(){
        return $func = function($param){
            echo $param;
        };
    }
    $data = content();
    $data('hello world');

     

     

     //(示例3):把匿名函数当做参数传递,并且调用它
    function callFunc($func){
        $func('hello world');
    }
    $data = function($param){
        echo $param;
    };
    callFunc($data);die;
    
    //直接将匿名函数进行传递
    callFunc(function($param){
        echo $param;
    });

     

    闭包使用use关键字   use:连接闭包和外界变量

    使用语法:

    1 $func = function() use(){
    2  
    3 };

    示例demo:

    //将外层变量传进内层匿名函数,并且调用
    function func($param){
        return function() use($param){
            echo $param;
        };
    }
    $content = func('hello world');
    $content();

     

    closure类中的bind和bindTo
    Closure类
    方法说明:

    Closure::__construct — 用于禁止实例化的构造函数
    Closure::bind — 复制一个闭包,绑定指定的$this对象和类作用域
    Closure::bindTo — 复制当前闭包对象,绑定指定的$this对象和类作用域

     

    bindTo():

    参数1 :传类进去,public属性和方法.只传第1个参数即可
    参数2 :传类进去,private或protected属性和方法.就要传第2个参数.两种写法:(1)传类名,直接字符串 (2)传类当前对象[第一个参数相同的$obj],bindTo()会自动获取类名

    示例demo:

    <?php
    class User{ 
        private $name ; 
        function __construct ( $name ){ 
              $this ->name = $name ; 
        } 

    $func = function () { 
        return "Hello " . $this ->name; 
    }; 

    $obj = new User('admin'); 

    $dataUser = $func->bindTo($obj,'User'); 
    echo $dataUser();//Hello admin

    $dataObj = $func->bindTo($obj,$obj); 
    echo $dataObj();die;//Hello admin

     

    bind():

    参数1($closure)  :表示闭包函数
    参数2($newthis)  :相当于在函数内/外调用的区别,传类的实例表示在内部调用,NULL相当于在外部调用
    参数3($newscope) :相当于类和实例调用的区别,函数的作用域,传类表示静态调用方式,内部可以“类名::属性”的方式使用;实例表示实例调用方式,内部可以“->”

    示例demo:

    <?php
    /** 
     * 复制一个闭包,绑定指定的$this对象和类作用域.
     */
    class Animal {
        private static $cat = "cat";
        private $dog = "dog";
        public $pig = "pig";
    }

    /* 
     * 获取Animal类静态私有成员属性
     */
    $cat = static function() {
        return Animal::$cat;
    };

    /* 
     * 获取Animal实例私有成员属性
     */
    $dog = function() {
        return $this->dog;
    };

    /* 
     * 获取Animal实例公有成员属性
     */
    $pig = function() {
        return $this->pig;
    };

    $bindCat = Closure::bind($cat, null, new Animal());// 给闭包绑定了Animal实例的作用域,但未给闭包绑定$this对象
    $bindDog = Closure::bind($dog, new Animal(), 'Animal');// 给闭包绑定了Animal类的作用域,同时将Animal实例对象作为$this对象绑定给闭包
    $bindPig = Closure::bind($pig, new Animal());// 将Animal实例对象作为$this对象绑定给闭包,保留闭包原有作用域
    echo $bindCat(),'<br>';// 根据绑定规则,允许闭包通过作用域限定操作符获取Animal类静态私有成员属性
    echo $bindDog(),'<br>';// 根据绑定规则,允许闭包通过绑定的$this对象(Animal实例对象)获取Animal实例私有成员属性
    echo $bindPig(),'<br>';// 根据绑定规则,允许闭包通过绑定的$this对象获取Animal实例公有成员属性

    展开全文
  • 本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用1.定义函数Python中定义函数用关键字def,如下例所示,testFun为函数名def testFun():print "hello world"2.函数参数一个函数可以有0个或多个形式...

    本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用

    1.定义函数

    Python中定义函数用关键字def,如下例所示,testFun为函数名

    def testFun():

    print "hello world"

    2.函数参数

    一个函数可以有0个或多个形式参数:

    def testAdd(x,y):

    print x+y

    函数的形式参数值可以初始化,使用了初始值的参数,在调用的时候可以不需要指定该参数。

    def testSum(z,x=1,y=0):

    print x+y+z

    调用函数:

    testSum(3) # 将打印出:4

    testSum(10,y=1) # 将打印出:12

    testSum(y=1,x=2,z=10) #将打印出:13

    注意:定义函数时,没有初始化的形式参数必须放在初始化形式参数的前面,否则会报错

    调用函数时,必须指定未初始化的参数,且参数的顺序要与函数定义的参数顺序一致(除非调用时指定了参数名)

    3.函数返回值

    Python函数可以通过return语句返回函数值,如果没有return语句或者return语句后什么都没有,函数将返回:None

    def testSub(x,y):

    return x-y

    调用函数:

    x=testSub(10,2)

    print x #将打印出:8

    4.字典和元组形式的函数参数

    Python函数的形式参数个数有时候不确定,这时候,我们可以使用*args或**args的形式参数。*args以元组的形式接收参数,而**args以字典的形式接收参数,当两者都存在时,定义函数时,*args必须定义在**args前面

    字典形参(**args)例子:

    def testDict(a,**b):

    print 'a is:',a

    print 'b is:',b

    调用函数方法一:

    tict={'x':1,'y':2,'z':3}

    testDict(10,**tict)

    调用函数方法二:

    testDict(10,x=1,y=2,z=3)

    输出结果:

    >>>

    a is: 10

    b is: {'y': 2, 'x': 1, 'z': 3}

    元组形参(*args)例子:

    def testTuple(a,*b):

    print 'a is :' ,a

    print b

    调用函数方法一:

    tup=('a',1,2,'b')

    testTuple(1,*tup)

    调用函数方法二:

    testTuple(1,'a',1,2,'b')

    输出结果:

    >>>

    a is : 1

    ('a', 1, 2, 'b')

    5.匿名函数

    Python可以用关键字lambda定义一个匿名函数,当需要一个函数类型的对象时,可以创建一个匿名函数来实现

    def testLambda(x):

    return lambda x:x+y #这里将返回一个函数对象

    函数调用:

    f=testLambda(10) #创建了一个函数对象:f

    print f(5) #将会打印出:15

    6.要点记录

    当多次调用一个具有初始化参数的函数时,该参数只会在第一次调用时被初始化一次。 这使得当形式参数为可变对象,如:列表、字典或者类的实例时,其结果可能和我们预期的不一样:

    def testParam(x=[]):

    x.append(10)

    print x

    多次调用函数(可能我们希望调用函数的结果是:都打印出列表[10]):

    testParam()

    testParam()

    testParam()

    testParam()

    实际输出结果:

    >>>

    [10]

    [10, 10]

    [10, 10, 10]

    [10, 10, 10, 10]

    当形式参数为不可变对象时,又是怎样的情况呢?我们再观察另一个例子:

    def testParam(x=2):

    x=x+2

    print x

    调用函数:

    testParam()

    testParam()

    testParam()

    testParam()

    实际输出结果:

    >>>

    4

    4

    4

    4

    备注:

    python中,万物皆对象。

    python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址。

    不可变对象(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)

    可变对象(mutable):字典型(dictionary)、列表型(list)、类的实例

    展开全文
  • /usr/bin/env python# -*- coding:utf8 -*-# #匿名函数# y = lambda x:x+1# print(y(10))name = 'ak'#一般函数形式def change_name(x):return name+'_m4'res = change_name(name)print(res)#匿名函数形式res = ...
  • python匿名函数

    2020-07-26 18:55:45
    匿名函数 认识匿名函数匿名函数是指在python中使用lambda来创建函数,称之为匿名函数 创建函数不在使用def创建,而是使用lambda关键字创建一个形式主义的函数 匿名函数的定义 格式 lambda 参数1,参数2,参数3... ...
  • 匿名函数lambda

    2018-03-28 22:10:00
    匿名函数的定义 在python中,匿名函数的定义如下: ...上述这种方式只是演示,说明在匿名函数独立存在的时候是如何使用的,但在实际中常常与其他函数联合使用, 使用匿名函数的目的实际...
  • JavaScript匿名函数

    2018-07-16 19:28:31
    JavaScript提供了定义匿名函数方式,这种创匿名函数的语法格式如下: function(parameter list){ alert("AAA"); } 这种函数定义语法无须指定函数名,而是将参数列表紧跟fuction关键字。在函数定义域...
  • 概述 闭包和匿名函数在PHP 5.3.0中引入,这两个特性非常有用,每个PHP开发者都应该...//将匿名函数赋给一个变量,通过变量名+()的形式来调用 $greet = function () { return Hello World; }; echo $greet(); 结果打印
  • 匿名函数与闭包

    2018-02-12 00:03:19
      匿名函数是指不需要定义函数名的一种函数实现方式。在Go里面里面可以像普通变量一样被传递或使用,Go语言支持在随时代码块中定义匿名函数。   匿名函数由一个不带函数名的函数声明和函数体组成,如下所示: ...
  • Python匿名函数

    2020-07-21 20:35:48
    关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数。 创建函数不在使用def创建,而是使用lambda关键字创建一个形式主义的函数 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是...
  • Javascript匿名函数

    2014-12-17 14:04:16
    1、匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数:就是没有函数名的函数。 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种:这也是最...
  • Python的匿名函数

    2019-01-17 17:26:59
    匿名函数是一种通过单个语句生成函数的方式,其结果是返回值。匿名函数使用lambda关键字定义,该关键字仅表达“我们声明一个匿名函数”的意思: x=2 def function(x): return x*2 function(x) 4 而该函数可以用...
  • PHP匿名函数

    2016-11-07 19:43:21
    匿名函数,也叫闭包函数,允许临时创建一个没有名称的函数。大多数情况下是作为回调函数的参数使用。当然,也有其它应用的场景。 匿名函数的使用在PHP中,匿名函数实际上就是一个 Closure对象:var_dump(function ()...
  • 0 匿名函数概念 Go语言提供两种函数:有名函数和匿名函数。所谓匿名函数就是没有函数名的函数。匿名函数没有函数名,只有函数体。它和有名函数的最大区别是:我们可以在函数内部定义匿名函数,形成类似嵌套的效果。...
  • JS 匿名函数

    2014-03-25 13:56:45
    void function() { alert('弹出框');...js匿名函数的写法还有n多种. 顾名思义,匿名函数就是没有实际名字的函数。例如,我们把上面的例子中,函数的名字去掉,再判断一下他是不是一个函数: alert(ty
  • 匿名函数有两种调用执行方式: (1)将匿名函数保存到变量,通过变量执行 (2)自执行匿名函数:在匿名函数后加调用的参数列表"()",即可对匿名函数进行立即调用 func main() { // 将匿名函数保存到变量 add :=...
  • 匿名函数的必包形式

    2015-08-14 10:25:42
    匿名函数的必包形式》 JavaScript中的匿名函数及函数的闭包 · 1、匿名函数 · 2、闭包 · 3、举例 · 4、注意 1、匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途...
  • javascript 匿名函数

    2016-07-29 21:38:02
    下面,我们先初步了解一下和匿名函数相关的概念。 函数声明(function 语句)  要使用一个函数,我们就得首先声明它的存在。而我们最常用的方式就是使用function语句来定义一个函数,如: view plaincopy...
  • MATLAB 匿名函数详解(超级全面)

    千次阅读 2021-03-04 19:14:00
    目录1 匿名函数的生成1.1基础生成1.2 多参数匿名函数1.3 含定参匿名函数1.4 sym转匿名函数1.5 字符串转匿名函数1.6 函数工厂(匿名函数的自动生成)1.6.1 已知参数个数1.6.2 未知参数个数1.7 拟合结果转匿名函数1.8 ...
  • Go匿名函数和闭包

    千次阅读 2017-11-14 10:30:29
     匿名函数是指不需要定义函数名的一种函数实现方式。  在Go语言中,函数可以像普通变量一样被传递或使用,这与C语言的回调函数比较类似。不同的是,Go语言支持随时在代码里定义匿名函数。  匿名函数由一个不带...
  • Ajax实践之匿名函数判断用户是否存在

    千次阅读 热门讨论 2014-09-04 19:13:44
    要想用匿名函数来实现用户是否存在,就应该明白:什么是匿名函数?是干什么的?怎么用?结合Ajax如何实现?那么就带着疑问进入研究中:  一、是什么?   “匿名”根据字面意思理解就是没有名字的意思。如果你能...
  • 本文实例讲述了JS立即执行的匿名函数用法。分享给大家供大家参考,具体如下: ;(function() {})(); 1.他叫做立即运行的匿名函数(也叫立即调用函数) 2.当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名...
  • js中的匿名函数和匿名自执行函数

    万次阅读 2017-05-27 21:56:54
    js中匿名函数和匿名自执行函数以及常见的使用场景
  • 目前在Java,C++,以及python中都支持匿名函数的使用,通常匿名函数理解起来要比普通函数困难一些,那么为什么还要使用匿名函数呢,因为非匿名函数在定义时就创建了函数对象和作用域对象,即使不调用,也会占用内存...
  • 一、匿名函数的定义 1. 匿名函数本质还是函数,普通函数中除了定义... 形参列表 '形参1,形参2,...' 的形式存在 : 固定写法 返回值 写任何有结果的表达式 2)调用匿名函数: 函数变量(实参列表) 匿名函数的本质就是类

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,189
精华内容 47,675
关键字:

匿名函数的存在形式