什么是函数式编程?

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

你在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中的所有内容都是一个对象-因此我们可以将函数用作修饰符,并可以将其应用于其他函数:

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

python初学函数_Python初学者速收藏!面向Python初学者的知识-函数相关推荐

  1. python使用复合语句def创建函数对象_【收藏】Python实用技巧-成为Pythoner必经之路...

    前言 本文主要记录 Python 中一些常用技巧,所描述的是告诉你怎么写才是更好?  如果你并不熟悉Python语法,希望你能在下面代码片段中看到Python的简单.优雅; 如果你象我这样,对 Pyt ...

  2. python模拟按键_python 模拟按键放在模拟器Python初学者的17个技巧

    Python初学者的17个技巧,有需要的朋友可以参考下. W WW.002pc .COM认为此文章对<python 模拟按键放在模拟器Python初学者的17个技巧>说的很在理. 交换变量 ...

  3. python连乘函数_Python常用的几种常用的内置函数

    abs(x) 用于返回绝对值 divmod(x,y) 函数中传入两个数字,返回的是x/y的一个结果的元组(商,余数) pow(x,y) 用于求x的y次方 all(iterable) 函数中传入一个可迭 ...

  4. python快速画图_python画图教程|无所不能的python编程是怎么快速画图的呢

    python怎么在屏幕上画图 用库matplot,用起来很方便 怎么用python绘图 请查python的第三方库matplotlab,这个里许多类似matlib(http://matplotlib. ...

  5. python编写异常处理_Python 简明教程 --- 23,Python 异常处理

    要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结 ...

  6. python3 format函数_Python学习教程:Python3之字符串格式化format函数详解(上)

    Python学习教程:Python3之字符串格式化format函数详解(上) 概述 在Python3中,字符串格式化操作通过format()方法或者f'string'实现.而相比于老版的字符串格式化方 ...

  7. python 列表 换行_python基础语法学习——参考Python Crash Course

    第一章:python在各个系统之间的安装和使用(略) 第二章: 变量 2.1.每个变量都存储了一个值 --与变量相关联的信息.在程序中可随时修改变量的值,而 Python将始终记录变量的最新值. 2. ...

  8. python爬虫机器_Python常用的机器学习库|python爬虫|python入门|python教程

    https://www.xin3721.com/eschool/pythonxin3721/ Python在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事 ...

  9. python的输出函数_Python输出函数print()总结(python print())

    Python 思想: "一切都是对象!" python版本:python3.5.1 ; IDE:pycharm2017.2 一.print()函数概述 print() 方法用于打印 ...

最新文章

  1. 一篇文章能够看懂基础代码之CSS
  2. 漫画:如何辨别二逼互联网公司!?
  3. React 新 Context API 在前端状态管理的实践
  4. delphi listview1添加指定列_对表格的列进行批量处理的函数详解
  5. Excel中根据单元格背景色求和
  6. ubuntu14.10环境下Apeach的安装配置
  7. windows测试模式
  8. USACO1.1.2 - Greedy Gift Givers
  9. 十个必备的学习iOS开发的网站
  10. isp mpls专线
  11. 凸优化第九章无约束优化 9.1无约束优化问题
  12. Hadoop权威指南-读书笔记
  13. 关于keil注册机的问题
  14. PID控制以及各种控制环节-C语言实现
  15. erp5,一套基于python和gpl协议,功能和界面完全模仿sap r3的大型开源制造业erp系统
  16. Java程序员学习必看 干货
  17. 手机H5如何对接支付宝登陆授权以及支付(H5网站支付)
  18. Java测试框架系列:Mockito 详解:第三部分:结果验证
  19. 房价是鹤岗2倍多,这座小城有星巴克、沃尔玛和三甲医院
  20. kettle连接sap出现错误报错信息(127) JCO_ERROR_FIELD_NOT_FOUND : Field DATUM not a member of INPUT

热门文章

  1. 网络摄像头实时获取信息
  2. ABC 189 E - Rotate and Flip 矩阵转移
  3. Codeforces Round #700 (Div. 1Div. 2)
  4. AtCoder 4169 [ARC100D] Colorful Sequences(dp)
  5. [2-sat专练]poj 3683,hdu 1814,hdu 1824,hdu 3622,hdu 4115,hdu 4421
  6. P5404-[CTS2019]重复【KMP,dp】
  7. P2000-拯救世界【生成函数,NTT】
  8. jzoj4224-食物【多重背包】
  9. ssl提高组周三备考赛【2018.10.31】
  10. Juice Extractor dp