function_functions - CSDN
function 订阅
Function,表示子例程的一般性名词。在某些编程语言中,它指带返回值的子例程或语句。在一些编程语言中起着关键字的作用。在Python中,function是非常重要而且常见的,一般获取类或函数的参数信息。 展开全文
Function,表示子例程的一般性名词。在某些编程语言中,它指带返回值的子例程或语句。在一些编程语言中起着关键字的作用。在Python中,function是非常重要而且常见的,一般获取类或函数的参数信息。
信息
属    性
一般性名词
应用领域
编程
中文名
Function
实    质
带返回值的子例程或语句
Function分类
在Python中,function一般有如下几类:一、POSITIONAL_OR_KEYWORD如果没有任何*的声明,那么就是POSITIONAL_OR_KEYWORD类型的,如同语义一样,POSITIONAL_OR_KEYWORD类型的参数可以通过位置POSITIONAL传参调用,也可以过关键字KEYWORD传参。以下是一个最简单的例子:def foo(a):pass# 位置传参调用foo(1)# 关键字传参调用foo(a=1)二、VAR_POSITIONAL第二种是可变的位置参数,通过一个*前缀来声明,如果你看到一个*xxx的函数参数声明(不是函数调用!声明和调用是两种不同的含义的),那一定是属于VAR_POSITIONAL类型的,如同语义,这种类型的参数只能通过位置POSITIONAL传参调用,不支持关键字KEYWORD传参,在函数内部,VAR_POSITIONAL类型的参数以一个元祖(tuple)显示,有一点需要注意的,VAR_POSITIONAL类型可以不传任何参数调用也不会报错,而且只允许存在一个。以下是一个简单的例子:def foo(*b):print(b)# 不传参数不会报错,参数值是一个空元祖foo() # 结果是 ()# 可以传入任意个位置参数调用foo(1, 2.0, '3', True) #结果是 (1, 2.0, '3', True)三、KEYWORD_ONLY第三种是关键字参数,这种参数只会在VAR_POSITIONAL类型参数的后面而且不带**前缀。如同语义,这类参数只能用关键字KEYWORD来传参,不可以用位置传参,因为位置传的参数全让前面的VAR_POSITIONAL类型参数接收完了,所以KEYWORD_ONLY只能通过关键字才能接收到参数值。以下是一个简单的例子:# VAR_POSITIONAL不需要使用时,可以匿名化def foo(*, c):pass# 只能关键字传参调用foo(c=1)四、VAR_KEYWORD第四种是可变的关键字参数,VAR_KEYWORD类型的参数通过**前缀来声明(不是函数调用!声明和调用是两种不同的含义的)。如同语义,这种类型的参数只能通过关键字KEYWORD调用,但可以接收任意个关键字参数,甚至是0个参数,在函数内部以一个字典(dict)显示。VAR_KEYWORD类型的参数只允许有一个,只允许在函数的最后声名。以下是简单的例子:def foo(**d):print(d)# 不传参数不会报错,参数值是一个空字典foo() # 结果是 {}# 可以传入任意个关键字参数调用foo(a=1, b=2.0, c='3', d=True) # 结果是 {'d': True, 'c': '3', 'b': 2.0, 'a': 1}五、POSITIONAL_ONLY第五种是位置参数,选择最后说这个,是因为它一点也不重要,属于python的历史产物,你无法在高版本的python中创建一个POSITIONAL_ONLY类型的参数,在某种底层的内置函数也许会使用这类型的参数,但我试用inspect模块也没法正确识别它的命名,但在Ipython的??帮助下,还是能看到Init signature: dict(self, /, *args, **kwargs)这里的self就是位置参数POSITIONAL_ONLY了。相信我,你不会需要用到它的,python推荐用VAR_POSITIONAL来代替它。下面是一个综合示例:import inspectdef foo(a, *b, c, **d):passfor name, parame in inspect.signature(foo).parameters.items():print(name, ': ', parame.kind)默认参数VAR类型不允许设置默认参数POSITIONAL_OR_KEYWORD和KEYWORD_ONLY可以自定义默认参数,而VAR_POSITIONAL和VAR_KEYWORD不允许自定义默认参数的,因为VAR_POSITIONAL的默认参数是tuple()空元祖,而VAR_KEYWORD的默认参数是dict()空字典。如果自定义了默认参数的话,调用函数的时候可以不必传参,如果默认值是空的话,那就必须传参数才能调用。默认参数的位置POSITIONAL_OR_KEYWORD类型的默认参数一定要放在后面,否则会报错,KEYWORD_ONLY虽然没有强制要求,因为都是用关键字传参,谁先谁后都无所谓,但最好还是尽可能地放在后面吧。默认参数不默认?默认参数绝对不能设置为可变类型(比如list, dict, set),如果你在函数内改变了默认参数,下次再调用时它就不再是默认值了。正确的示例:def foo(p1, p2=2.0, *, k1, k2=None):a_list = k2 or list()passfoo(1, k1='3')
收起全文
精华内容
参与话题
  • Functionfunction的区别

    千次阅读 2018-05-07 19:36:45
    Function是一个构造函数,用于创建一个对象function是一个关键字可以声明一个函数对象可以通过以下几个样例来判断: function f(){}; var a = function(){}; var a = new Function();但是不建议通过Function的...

    Function是一个构造函数,用于创建一个对象

    function是一个关键字可以声明一个函数对象


    可以通过以下几个样例来判断:

        function f(){};

        var a = function(){};

        var a = new Function();

    但是不建议通过Function的方式去声明函数对象,因为在给这个对象添加属性(书写其方法)的时候,会再一次的解析代码:

        var test = new Function();

        function test (){};

    展开全文
  • Function的用法

    千次阅读 2019-01-14 15:04:20
    定义函数的基本方法:  1,函数声明:  function fun1(){  }  2,函数表达式:  var fun2 =function (){  }  3,Function:  var fun3 = new Function(){  ...

    定义函数的基本方法:

           1,函数声明:

                function fun1(){

              }

           2,函数表达式:

                var fun2 =function (){

              }

           3,Function:

               var fun3 = new Function(){

              }

    Function 可以用来新建函数对象:

    语法:

    1,如果不传参,创建的就是一个空的函数

    //var 函数名 = new Function()

    2,如果只传一个参数,这个参数就是函数体

     //var 函数名 = new Function("函数体")

    3,如果传多个参数,最后一个参数为函数体,前面的参数都是该函数的形参

    展开全文
  • matlab function的使用

    万次阅读 多人点赞 2017-11-12 10:19:29
    Matlab函数定义格式,用关键字function定义函数   function [输出变量] = 函数名称(输入变量) % 注释 % 函数体   简单的函数如下:   function [a,b,c]=test(d,e,f) a=d+e; b=e+f; c=f+d; end   ...

    首先创建一个m文件;

    Matlab函数定义格式,用关键字function定义函数

     

    function [输出变量] = 函数名称(输入变量)

    % 注释

    % 函数体

     

    简单的函数如下:

     

    function [a,b,c]=test(d,e,f)

    a=d+e;

    b=e+f;

    c=f+d;

    end

     

    函数的调用
        [q,w,e]=test(1,2,3)

    展开全文
  • function详解 c++

    万次阅读 2016-08-16 19:13:10
    std::function 参考资料 • cplusplus.com:http://www.cplusplus.com/reference/functional/function/ • cppreference.com:http://en.cppreference.com/w/cpp/utility/functional/function std...

    std::function

    参考资料


    • cplusplus.comhttp://www.cplusplus.com/reference/functional/function/

    • cppreference.comhttp://en.cppreference.com/w/cpp/utility/functional/function

    std::function简介


    • 类模板声明

    复制代码
    // MS C++ 2013
    template<class _Fty> class function;
    template<class _Fty> class function : public _Get_function_impl<_Fty>::type { ... }
    
    // GCC 4.8.2
    template<typename _Signature>                  class function;
    template<typename _Res, typename... _ArgTypes> class function<_Res(_ArgTypes...)>
        : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, private _Function_base { ... }

    // cplusplus.com
    template <class T> function; // undefined template <class Ret, class... Args> class function<Ret(Args...)>;
    复制代码

    • 类模板说明

           std::function是一个函数包装器模板,最早来自boost库,对应其boost::function函数包装器。在c++0x11中,将boost::function纳入标准库中。该函数包装器模板能包装任何类型的可调用元素(callable element),例如普通函数和函数对象。包装器对象可以进行拷贝,并且包装器类型仅仅只依赖于其调用特征(call signature),而不依赖于可调用元素自身的类型。

           一个std::function类型对象实例可以包装下列这几种可调用元素类型:函数、函数指针、类成员函数指针或任意类型的函数对象(例如定义了operator()操作并拥有函数闭包)。std::function对象可被拷贝和转移,并且可以使用指定的调用特征来直接调用目标元素。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常

    • 模板参数说明

           以cplusplus.com中描述的原型说明:

           T      通用类型,但实际通用类型模板并没有被定义,只有当T的类型为形如Ret(Args...)的函数类型才能工作。

           Ret   : 调用函数返回值的类型。

           Args : 函数参数类型。

    std::function详解


    • 包装普通函数

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    int g_Minus(int i, int j)
    {
        return i - j;
    }
    
    int main()
    {
        function<int(int, int)> f = g_Minus;
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

    • 包装模板函数

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    template <class T>
    T g_Minus(T i, T j)
    {
        return i - j;
    }
    
    int main()
    {
        function<int(int, int)> f = g_Minus<int>;
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

    • 包装lambda表达式

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    auto g_Minus = [](int i, int j){ return i - j; };
    
    int main()
    {
        function<int(int, int)> f = g_Minus;
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

    • 包装函数对象

           非模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    struct Minus
    {
        int operator() (int i, int j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        function<int(int, int)> f = Minus();
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

           模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    template <class T>
    struct Minus
    {
        T operator() (T i, T j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        function<int(int, int)> f = Minus<int>();
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

    • 包装类静态成员函数

           非模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    class Math
    {
    public:
        static int Minus(int i, int j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        function<int(int, int)> f = &Math::Minus;
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

           模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    class Math
    {
    public:
        template <class T>
        static T Minus(T i, T j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        function<int(int, int)> f = &Math::Minus<int>;
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

    • 包装类对象成员函数

           非模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    class Math
    {
    public:
        int Minus(int i, int j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        Math m;
        function<int(int, int)> f = bind(&Math::Minus, &m, placeholders::_1, placeholders::_2);
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码

           模板类型:

    复制代码
    #include <iostream>
    #include <functional>
    using namespace std;
    
    class Math
    {
    public:
        template <class T>
        T Minus(T i, T j)
        {
            return i - j;
        }
    };
    
    int main()
    {
        Math m;
        function<int(int, int)> f = bind(&Math::Minus<int>, &m, placeholders::_1, placeholders::_2);
        cout << f(1, 2) << endl;                                            // -1
        return 1;
    }
    复制代码
    展开全文
  • 乍一看以为是 function ,但我们要探讨的是 Function 类,这个课程很短,但非常重要,会揭示很多实用技巧。
  • 箭头函数与function的区别

    千次阅读 2017-10-25 15:46:51
    原文地址:http://es6.ruanyifeng.com/#docs/function#箭头函数 箭头函数有几个使用注意点。(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。(2)不可以当作构造函数,也就是说,不可以...
  • https://blog.csdn.net/qq_30068487/article/details/82752466?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_...
  • 箭头函数()=>{}与function的区别

    千次阅读 2018-09-25 13:58:55
    1.箭头函数与function定义函数的写法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, b)=&gt;{ return a + b }; 2.this的指向:使用function定义的函数,this的指向随着...
  • 箭头函数Arrow Function

    2019-07-18 21:29:14
    箭头函数:ES6标准新增的一种新的函数(Arrow Function),可以把它们看作是能附加在单击事件或鼠标事件上的一次性函数,箭头函数相当于匿名函数,并且简化了函数定义 缺点: 不能用来声明一个函数,也不能够通过 ...
  • function&箭头函数

    2019-07-13 04:35:55
    JS中this到底指向谁?...function:谁调用指向谁 var id = '654321' var handler = { id: '123456', init: function() { console.log(this.id) } }; var zy = { id: '9527' } handler...
  • jQuery中$(function()与(function($)等的区别详细讲解

    万次阅读 多人点赞 2011-03-02 13:50:00
    (function($) {…})(jQuery);这里实际上是匿名函数,如下:function(arg){…}这就定义了一个匿名函数,参数为arg而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:...
  • 1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Expression)。这种函数在函数定义的地方就直接执行了。 通常的函数声明和调用分开的写法...
  • function a(){} 和 var a = function(){}的区别 function a(){ alert("函数1"); } var b = function(){ alert("函数2"); } 查了一下这两种方式的区别,主要是如下 a(); b(); function a(){ alert("函数1"); } ...
  • JS的a:function(){}

    千次阅读 2019-08-17 23:53:41
    var person2 = { "name":"lz", "say" : function(){ alert('hello word!'); } } person2.say(); 属性之间用逗号 函数内部用分号
  • 1、(function($) {…})(jQuery); 1)、原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,...
  • C++11新特性之std::function

    万次阅读 2015-11-04 22:43:50
    在实际工作中,用到了std::function来实现回调函数。所以写该博客做一个简要补充。类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,...
  • Matlab中function的用法!

    万次阅读 多人点赞 2014-07-24 15:22:12
    function用来定义函数,一般一个函数放在一个.m文件里。举个简单的例子建立一个myfunction.m,然后在文件中写。 function y=myfunction(a,b) 其中a,b是输入函数的参数,y是函数返回的值。当需要返回多个值时,可以...
  • Matlab function函数如何使用

    万次阅读 多人点赞 2019-06-28 14:16:41
    1、创建.m文件,.m文件中用关键字function定义函数,定义函数的格式如下: function [输出变量] = 函数名称(输入变量) 输入变量和输出变量可以是一个,也可以是多个。 function [输出变量] = 函数名称(输入变量) %...
  • js 函数function用法

    万次阅读 2012-11-19 13:31:09
    javascript 函数不同于其他的语言,每个函数都是...在继续讲述之前,先看一下函数的使用语法:以下是引用片段:function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func
  • C++11中std::function的使用

    千次阅读 2020-01-24 19:08:57
    类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。 通过...
1 2 3 4 5 ... 20
收藏数 3,430,570
精华内容 1,372,228
关键字:

function