首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python初学者速收藏!面向Python初学者的知识-函数

什么是函数式编程?

函数式编程是一种编码范例,其中我们定义要做什么而不是执行什么动作。这个想法最初是从数学中采用的,我们定义输入到函数中的输入以及我们期望从中获得的输出。 函数式编程很少依赖状态管理-这意味着无论输出多少,我们传递相同的参数时,可以将其解释为数据正在进行一些转换,最终导出所需要的输出。

你在Python中的第一个功能

尽管Python并不是主要的功能语言,但它支持功能编程相对简单,因为Python中的所有内容都是对象。这意味着可以将函数分配给变量并传递。 为了使事情简单,让我们从打印Hello World的简单函数开始:

函数的语法以def关键字开头,后跟函数名称,然后使用圆括号。定义函数以冒号(:)结尾。然后在带有四个空格缩进的下一行中,该函数的主体开始。缩进是我们在使用函数时需要记住的最重要的事情。

函数和变量

全局变量和函数变量 。当我们在函数内部以及全局中拥有一个具有相同名称的变量时,当我们尝试访问该变量时(无论是访问全局变量还是函数作用域变量),将存在歧义。 因此,Python提供了一个函数,globals(),通过它我们可以访问函数内部具有相同名称的全局变量:

将函数分配给变量 -在Python中,我们可以将函数分配给变量,然后调用它:

带参数的函数

现在我们知道了如何定义一个函数,是时候进入下一个阶段了,在该阶段我们将输入传递给函数-参数。为了快速理解它,我们将从一个数学函数开始,在该函数中我们计算两个数字的和:

和第一个函数一样,它是一个简单的函数,但是有两个输入- a和b。

调用功能 -仅通过调用函数并以函数中提到的顺序传递参数或使用命名参数,就可以通过两种方式来调用带有参数的函数:

具有默认值的参数 -在上面的示例中,a和b是两个强制性参数—这意味着开发人员必须传递两个参数来调用该函数。在Python中,我们可以使用默认值指定参数。因此,这些参数将是可选参数。如果未传递任何可选参数,则在调用函数时,Python会考虑该参数的默认值:

我们可以通过三种方式调用上述函数,如下所示:

具有返回值的函数

我们已经看到了如何将输入传递给函数。是时候实现函数的输出了。它与Java,Kotlin等其他大多数语言类似-我们需要使用return关键字并提及值:

Python具有返回多个值作为输出的独特功能,这是大多数语言无法做到的:

x,y并且z变量将分别分配有正,负和乘法值。

用作参数和返回值

Python函数式编程可以将函数作为输出返回或将其作为参数传递。

作为参数 -到目前为止,我们已经看到了如何将变量作为参数传递给函数。现在,我们将学习如何将函数作为参数传递给其他函数-类似于Kotlin中的高阶函数:

用作返回值(输出) -与函数作为参数传递类似,我们也可以将其作为输出返回-这是Python中的独特功能:

内部功能

我们可以在另一个函数内编写一个函数,这是我迄今为止在任何其他编程语言中都没有见过的。内部函数的作用域是外部函数-内部函数只能从外部函数访问: to访问内部功能的正确方法

无法从包装函数的外部访问内部函数:

Lambda函数

Lambda是具有单行表达式的函数的最简单形式,并且没有名称。在Python中,我们必须使用lambda关键字而不是def创建lambda函数:

在这里,变量f是一个简单的lambda函数,而a和b是的参数f。语法类似于普通功能。唯一的变化是关键字和单行表达式。 以下是一个简单的示例,演示了我们如何使用普通函数和lambda:

map和过滤器功能

到目前为止,我们已经看到了如何创建创建函数和其他策略。开箱即用的Python包含默认功能,例如map和filter,在一些用例中很方便。

map-map是一个需要另一个函数对象以及任意数量的iterables类似列表和字典的函数。map使用提供给它的函数对象迭代列表中的每个项目,并返回一个列表:

我们可以传递多个列表到map,如下所示:

过滤 -filter函数需要两个参数-一个函数对象和一个可迭代的。Filter遍历返回boolean值的函数对象中的每个项目。最后,filter返回一个包含从功能对象返回true的项目的列表。

装饰器

装饰器是一种设计模式-接受一个对象并为其添加新功能,而无需从调用站点进行任何更改。如前所述,Python中的所有内容都是一个对象-因此我们可以将函数用作修饰符,并可以将其应用于其他函数:

希望你能学到一些有用的东西,谢谢阅读。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200518A0G0YM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券