它是编程语言中经常使用的关键字。那么,什么是?它的用途是什么?
在这里,我们通过阅读各种来源,总结了文章中的“一种语法、三种功能、四种用法和一种参数”。
语法
在 中,语法是唯一的。其形式如下:
:
其中,是保留关键字,由用户定义。详情如下。
这是参数列表。它的结构与函数 () 中的参数列表相同。具体来说,可以有非常多的表单。例如:
甲、乙
a=1,b=2
*参数
**
a, b=1, *参数
空
......
下面是一个关于参数的表达式。表达式中出现的参数需要在表达式中定义,并且表达式只能是单行的。以下是所有有效的表达式:
没有
甲+乙
总和(a)
如果 >则为 10 否则为 0
......
这里,:表示一个函数。此函数称为函数。
三大特点
函数具有以下特征:
函数是匿名的:匿名函数是没有名称的函数。函数没有名称。
函数具有输入和输出:输入是传递到参数列表中的值,输出是从表达式计算出的值。
函数一般很简单:一行确定一个函数不能完成复杂的逻辑,而只能完成非常简单的函数。由于它实现的功能是不言自明的,因此它甚至不需要特殊名称来描述它。
以下是一些函数示例:
x, y: x*y; 函数输入是 x 和 y,输出是它们的乘积 x*y
:None; 该函数没有输入参数,输出为 None
*args: sum(args);输入是任意数量的参数,输出是它们的总和(隐含的要求是输入参数必须能够是附加的)。
**:1;输入为任意键值对参数,输出为 1
四种用法
由于语法是固定的,因此基本上只有一种方法可以使用它,那就是定义一个函数。在实践中,根据该功能的不同应用场景,该功能的使用可以扩展到以下类型:
将函数分配给变量,并通过该变量间接调用该函数。
例如,执行 add= x, y: x+y,定义加法函数 x, y: x+y,并将其赋值给变量 add,使变量 add 成为具有加法函数的函数。例如,如果执行 add(1,2),则输出为 3。
将一个函数分配给另一个函数,用该函数替换另一个函数。
例如,为了在标准库时间模拟函数 sleep,我们可以在程序初始化时调用 time.sleep= x:None。这样,在后续代码中调用时间库的 sleep 函数将不执行原始函数。例如,当 time.sleep(3) 被执行时,程序不会休眠 3 秒,但什么都不做。将
函数作为其他函数的返回值返回给调用方。
函数的返回值也可以是函数。例如,x, y: x+y 返回一个加法函数。在这种情况下,函数实际上是在函数内部定义的函数,称为嵌套函数或内部函数。相应地,包含嵌套函数的函数称为外部函数。内部函数访问外部函数的局部变量的能力是 () 编程的基础,这里就不展开了。
将函数作为参数传递给其他函数。
某些内置函数接受函数作为参数。此类的典型内置函数具有这些功能。
功能。此函数用于指定筛选列表元素的条件。例如,( x: x % 3 == 0, [1, 2, 3]) 指定过滤掉列表 [1,2,3] 中可被 3 整除的元素,结果为 [3]。
功能。此函数用于指定对列表中所有元素进行排序的条件。例如([1, 2, 3, 4, 5, 6, 7, 8, 9], key= x: abs(5-x)) 按元素从 5 到最大的距离对列表 [1, 2, 3, 4, 5, 6, 7, 8, 9] 进行排序,结果为 [5, 4, 6, 3, 7, 2, 8, 1, 9]。
map 函数。此函数用于指定列表中每个元素的常用操作。例如,map( x: x+1, [1, 2,3]) 将 1 添加到列表 [1, 2, 3] 中的元素中,得到 [2, 3, 4]。
功能。此函数用于指定列表中两个相邻元素的绑定条件。例如( a, b: '{}, {}'.( a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9]) 以逗号分隔字符的形式从左到右组合列表 [1, 2, 3, 4, 5, 6, 7, 8, 9] 的元素,生成 '1, 2, 3, 4, 5, 6, 7, 8, 9'。
此外,某些库函数还接受函数作为参数,例如 spawn 函数。在这种情况下,该函数也可以作为参数传入。
争议
事实上,在社区中对此存在争议。程序员在是否使用它方面存在分歧。
支持者认为,使用该代码编写的代码更紧凑,更“更多”。
反对者认为,函数可以支持的内容是有限的,并且如果...伊利夫...还。。。和异常处理程序 try .......此外,函数的功能是隐藏的,对于代码之外的人来说,需要花费一定的理解。他们认为,使用 for 循环等作为替代方案是一种更直接的编码风格。
争议尚无定论。在实践中,编程的使用取决于程序员的个人喜好。
这就是我们总结中的“一种语法、三种功能、四种用法和一个参数”。如有任何错误,欢迎批评和纠正。
扫一扫在手机端查看
-
Tags : “闭包”和“lambda”有什么区别? ba是什么元素 C#关于lambda表达式作为方法参数的问题 Eclipse中可能的事情在IntelliJ中是不可能的? g ++如何检查它是否支持lambda函数? lambda lambda sum lambdac lambdas lambda函数 lambda在python中返回lambda lambda排序 lambda演算的语法树 Lambda表达式以及如何将它们组合起来? lambda表达式存在于列表中 lambda表达式是多线程的吗? linq到db4o的Lambda语法? Python 3.x中函数的内存使用 python lambda if python 休眠
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。