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

举报
华章计算机 发表于 2020/02/15 19:58:37 2020/02/15
【摘要】 本节书摘来自华章计算机《数据科学与分析:Python语言实现》 一书中第2章,第2.3.5节,作者是[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar),白 皓 刘江一 上官明乔 刁 娟 译。

2.3.5 函数

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

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

 image.png

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

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

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

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

 image.png

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

 image.png

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

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

 image.png

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

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

 image.png

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

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

 image.png

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

 image.png

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

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

 image.png

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

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

 image.png

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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200