匿名函数

go-函数

馋奶兔 提交于 2020-03-02 18:34:01
函数是组织好的、可重复使用的、用于执行指定任务的代码块。 函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数允许多返回值; 函数本身可以作为值进行传递; 函数可以作为变量的值; 函数可以作为参数和返回值; 支持匿名函数(没有名字的函数)一般用于工厂模式; 可以满足接口; 函数:可重复使用的、实现单一或相关联的代码片段,其目的是模块化编程,提高模块性和代码的复用率。 函数的定义 Go语言中定义函数使用 func 关键字,具体格式如下: 1 func 函数名(参数)(返回值){ 2 函数体 3 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名。 参数:参数由参数变量和参数变量的类型组成,多个参数之间 , 使用分隔。 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用 () 包裹,并用 , 分隔。 函数体:实现指定功能的代码块。 我们先来定义一个求两个数之和的函数: 1 func intSum(x int, y int) int { 2 return x + y 3 } 函数的参数和返回值都是可选的,例如我们可以实现一个既不需要参数也没有返回值的函数: 1 func sayHello() { 2 fmt.Println("Hello 望京") 3 }

python之内置函数,匿名函数

偶尔善良 提交于 2020-03-02 07:11:40
内置函数 我们一起来看看python里的内置函数。什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等。截止到Python版本3.6.2,现在Python一共为我们提供了68个内置函数,有些函数我们已经用过了,有些我们还没用到,还有一些被封印了,必须等我们学了新知识才能解开封印。那么现在我们就来学习一些Python的内置函数。 内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type() chr() frozenset() list() range() vars() classmethod()

[C++11]Lambda表达式的使用

Deadly 提交于 2020-03-02 04:57:33
C++11引入了Lambda表达式。Lambda表达式的引入,方便了简短函数的定义,为常用的一次性函数的定义和使用提供了很大的便利。 Lambda表达式实际上是一种匿名函数定义,常用来定义简单和不重复使用的函数。其可使用的外部变量、定义方式等都与常规函数有所不同。 #语法结构# Lambda表达式的完整定义结构如下: auto f = [函数对象参数](函数参数列表) mutable throw(类型)->返回值类型 {函数语句}; auto是C++11新引入的关键字,主要用来自动推断变量的类型,Lambda表达式返回一个函数指针,可以用一般的函数指针定义式来指示类型,但是在C++11中,使用auto更为简便。调用Lambda定义的函数,可以直接使用以下语句来调用: f(实参列表); Lambda表达式的定义结构分为六个部分: 函数对象参数部分,Lambda表达式的引入部分,用于初始化Lambda表达式,其中[]中可以填入一些标识来指示Lambda表达式如何捕获可以访问的变量。Lambda表达式可以捕获的变量只限于在Lambda表达式定义位置之前出现的变量。标识的放置有以下几种方式: 空白表示不使用任何参数,仅可使用形参列表中的参数。 =(等号),表示使用的变量以值传递的方式捕获,可以直接使用this指针,不再需要显式列举this。 &(与号),表示使用的变量以引用传递的方式捕获

C++11新特性:Lambda函数(匿名函数)

一个人想着一个人 提交于 2020-03-02 04:36:08
声明:本文参考了Alex Allain的文章 http://www.cprogramming.com/c++11/c++11-lambda-closures.html 加入了自己的理解,不是简单的翻译 C++11终于知道要在语言中加入匿名函数了。匿名函数在很多时候可以为编码提供便利,这在下文会提到。很多语言中的匿名函数,如C++,都是用Lambda表达式实现的。Lambda表达式又称为lambda函数。我在下文中称之为Lambda函数。 为了明白Lambda函数的用处,请务必先搞明白C++中的自动类型推断: http://blog.csdn.net/srzhz/article/details/7934483 基本的Lambda函数 我们可以这样定义一个Lambda函数: [cpp] view plain copy #include <iostream> using namespace std; int main() { auto func = [] () { cout << "Hello world" ; }; func(); // now call the function } 其中func就是一个lambda函数。我们使用auto来自动获取func的类型,这个非常重要。定义好lambda函数之后,就可以当这场函数来使用了。 其中 [ ] 表示接下来开始定义lambda函数

2020/3/1

风流意气都作罢 提交于 2020-03-02 04:11:45
cf+补题:4小时 复习c++第8章,并敲了相关代码熟悉:2小时 ///c++第八章 #include"stdio.h" #include"string.h" #include"iostream" #include"algorithm" using namespace std; ///inline表示该函数为内联函数,参数为引用参数 ///同时如果不想对函数参数的引用的值改变可将函数写为square1形式 ///此为work1引用的有关函数 inline int square(int &x) { int &z = x; return z = z * z; } inline int square1(const int &x) { /// int &z = x; ///此语句是错误的,同样在其中对x值进行改变也是错误的。 ///编译器将禁止其对x的值进行改变。 int z = x;///此可行 return x * z; } ///此为临时变量&的有关函数 inline void swapr1(int &a,int &b)///交换a,b值 { int temp = a; a = b; b = a; return ; } inline void swapr2(long long &a,long long &b) { long long temp = a; a = b; b = temp

函数五--内置函数和匿名函数

青春壹個敷衍的年華 提交于 2020-03-01 11:01:41
内置函数 --python提供给你直接可以拿来使用的所有函数 内置函数大致分为六大类:反射相关、基础数据类型相关、作用域相关、面向对象相关、迭代器/生成器相关、其他。 作用域相关(2) : locals,globals 基于字典的形式获取局部变量和全局变量 locals() -----获取执行本方法所在命名空间内的局部变量 globals() ------获取当前所有的全局变量 迭代器/生成器相关(3) : range、next、iter 其他(12): 字符串类型代码的执行:eval、exec、compile eval()将字符串类型的代码执行并返回结果(有返回值 —— 有结果的简单计算)eval只能用在你明确知道你要执行的代码是什么 print(eval('1+2+3+4')) # 10 eval('print(123)') # 123 exec()将字符串类型的代码执行(没有返回值 —— 简单流程控制) print(exec('1+2+3+4')) # None exec("print('hello world')") # hello world code = ''' for i in range(3): print('*'*i) ''' exec(code) # * # ** compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值

C++中的匿名函数(译)

99封情书 提交于 2020-02-29 17:21:47
C++11最令人兴奋的特性之一就是能够创建匿名函数(lambda functions),有时也被称为闭包(closures)。这意味着什么?lambda function是一个可以内联写在代码里的函数(通常被传递给另一个函数,与函数对象(functor)和函数指针有相似的概念)。有了lambda,快速创建函数已经变得更容易,也意味着不仅可以在之前需要定义一个独立的命名函数时使用lambda function,而且也可以凭借快速创建简单的函数写出更多的代码。本文中我会先解释为什么lambda是很棒的,并会给出一些例子,然后简略阐述使用lambda时你所可以做的所有细节。 为什么lambdas让人震撼 假使有一个地址簿类,而且想要提供一个搜索方法。你可以提供一个简单的搜索函数,接受一个string作为参数并返回所有与该string参数相匹配的地址。有时是该类的用户所想要的,但要是他们仅想在域名中搜索,或更可能在用户名中搜索且忽略掉在域名中的结果呢?或许他们可能想要搜索所有同时出现在另一个列表中的邮件地址,有许多潜在地待搜索的感兴趣的事情。代替把这些所有的选择都构建到类里,岂不是更好提供一个接受确定邮件地址是否是感兴趣的过程作为参数的通用find方法?我先称该方法为findMatchingAddresses,且接受一个函数或类函数参数。 #include <string>

C++11 Lambda表达式(匿名函数)详解

无人久伴 提交于 2020-02-25 21:29:38
使用 STL 时,往往会大量用到函数对象,为此要编写很多函数对象类。有的函数对象类只用来定义了一个对象,而且这个对象也只使用了一次,编写这样的函数对象类就有点浪费。 而且,定义函数对象类的地方和使用函数对象的地方可能相隔较远,看到函数对象,想要查看其 operator() 成员函数到底是做什么的也会比较麻烦。 对于只使用一次的函数对象类,能否直接在使用它的地方定义呢?Lambda 表达式能够解决这个问题。使用 Lambda 表达式可以减少程序中函数对象类的数量,使得程序更加优雅。 Lambda 表达式的定义形式如下: [外部变量访问方式说明符] (参数表) -> 返回值类型 { 语句块 } 其中,“外部变量访问方式说明符”可以是 = 或 & ,表示 {} 中用到的、定义在 {} 外面的变量在 {} 中是否允许被改变。 = 表示不允许, & 表示允许。当然,在 {} 中也可以不使用定义在外面的变量。“-> 返回值类型”可以省略。 下面是一个合法的Lambda表达式: [=] (int x, int y) -> bool {return x%10 < y%10; } Lambda 表达式实际上是一个函数,只是它没有名字。下面的程序段使用了上面的 Lambda 表达式: int a [ 4 ] = { 11 , 2 , 33 , 4 } ; sort ( a , a +4 , [=](

什么是匿名函数?

孤者浪人 提交于 2020-02-25 12:48:39
在前端面试中面试官基本都会问到什么是匿名函数、什么是闭包函数。 本文就先来说一下什么是匿名函数。 匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的: 1 function do(){ 2 // 执行代码 3 }; 4 5 // 调用 6 do(); 这种写法是定义了一个名为do的函数,并通过函数名称进行调用。 那如果没有名字是什么样子的啊? 1 function () { 2 // 执行代码 3 }; 这种写法在编译的时候会报错: Uncaught SyntaxError: Unexpected token ( 这是为什么呢?原来时因为浏览器在进行语法分析的时候发现这个函数根本没法执行。 那要为什么还要匿名函数呢?在编程语言中如果又个编码方式那这种编码方式肯定是能正常运行的,那该如何让匿名函数跑起来呢?再看下面的例子: var do = function () { // 执行代码 } do(); 这种函数大家肯定都知道,其实这种写法就是将匿名函数复制为变量do,再通过变量名执行函数。 (function(){ // 执行代码   console.log("打印成功"); })(); 上面代码是什么意思呢? 可以先把上面的代码分几个部分: 第一部分是括号里面的匿名函数,第二部分是加上括号的匿名函数,第三部分带上最后面执行用的括号。

python-内置函数,匿名函数

非 Y 不嫁゛ 提交于 2020-02-22 07:29:01
内置函数 我们一起来看看python里的内置函数。什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等。截止到python版本3.6.2,现在python一共为我们提供了 68个内置函数 。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢? 内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type()