数据科学分析:Python语言实现》 —2.3.5 函数

网友投稿 513 2022-05-30

2.3.5 函数

我们介绍了Python中的一些基本控制流结构,并且可以开始将它们组合成逻辑块来执行特定任务。特别地,我们可以构造出在必要时重复执行的代码片段,其结果取决于所提供的输入参数。换句话说,我们谈论的话题是函数。

Python中的函数具有以下语法:

请注意,函数定义以保留字def开头,函数内部的代码用适当的缩进表示。

该函数的输入参数是变量arg1,arg2,...,argn,你可以为其中一些参数定义默认值。定义具有默认值的参数必须放在参数列表的最后。

函数定义中的第二行为文档字符串,其目的是说明该函数的执行步骤和目的。最后,请注意函数不要求必须有返回值。

让我们定义一个函数来计算由边a和b所组成的矩形面积:

请注意,参数b的默认值为1。如果我们调用此函数只传入一个参数,该函数将知道如何处理计算并在需要时使用默认值。

定义函数后就可以通过函数名直接调用;就像使用其他Python内置函数一样。

在上面代码的第一行中,我们使用两个参数调用rect_area函数,这样就将值20赋值给参数a,并用2覆盖b的默认值。正如预期的那样,计算的面积是40。让我们尝试只提供一个值来调用函数:

这里我们只将值42.4传递给函数。在这种情况下,值将分配给参数a,并在计算中使用默认值b = 1。

我们可以在程序中包含控制流结构,以使它们更有用、更灵活。举个例子,我们实现一个简单的函数来计算数字的阶乘:

其中,“* =”和“- =”表示使用左侧值重复操作。

当我们传入一个小于或等于函数期望值的数字时,它返回值1,当数字大于1时,使用while循环计算阶乘。让我们使用这个函数:

《数据科学与分析:Python语言实现》 —2.3.5 函数

更方便的方法可能是即时定义一个简单的函数,而不必使用完整的def结构。在这种情况下,可以使用lambda函数:

与之前一样,arg1,arg2……是输入参数,而statement是要根据输入参数执行的代码。

例如,如果我们需要计算数字列表的每个元素的立方,可以尝试以下代码:

在这种情况下,对象g是一个lambda函数,可以像调用Python中的其他函数一样对其加以调用。

到目前为止,没有什么值得奇怪的地方:我们已经用数字1、3和6初始化了一个列表,然后定义了一个lambda函数来计算参数n的立方。我们现在可以应用此功能,例如:

lambda函数看起来可能非常简单,但正如上面所示,它虽然简单,但是非常实用。可以在PySpark的源代码中看到它的身影。PySpark是用于Spark的Python API,它是一种开源集群计算框架。

python 机器学习 Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:OCR表单识别:准确快速实现纸质表格表单的电子化
下一篇:《云数据中心网络与SDN:技术架构与实现》——2.5 回归软件本源——从N到D再到S
相关文章