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

a32972d6190a26c5d0e58c97b92a7ad7.png

什么是函数式编程?

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

你在Python中的第一个功能

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

a7f91b797595f69d09aa3dbdfb519351.png

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

函数和变量

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

188487a9731ed78d0c5d990188852943.png

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

686f7a0468025c7abec9fabcac81ccac.png

带参数的函数

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

0be79df0b3d992751485e7561692c10f.png

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

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

02ed3534a8185c18121524bd65cb254b.png

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

6521fef102e5d609b96be94bdcd41ac4.png

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

0af9e254e1b0ad9c38828140c8e50b2e.png

具有返回值的函数

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

155b79f537a75c7b627a592d5ee0b2c9.png

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

4f3f0d78d81ab79ed44e18a72300515e.png

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

用作参数和返回值

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

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

66c26f7b32da4f0843596654c514a5c9.png

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

99f5c56bf0970cabf6e5791a2c5447ef.png

内部功能

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

06c3d139f66ab4958aa93144afe4ef91.png

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

d0a5e834f879631b924ca8e689109762.png

Lambda函数

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

60ae48eb18db8e2bb21e29ffa0833bde.png

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

f8ff2337bbce90a42fc794ba871c3497.png

map和过滤器功能

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

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

201634d372412d03f29bd032724c76e7.png

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

7d8a63331a8a31bc4cfc1bb0bfe32173.png

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

8646c7f06985da13b37639534817f178.png

装饰器

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

806fdb42f3dbdfd18e4ee09a7f197827.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用业务流水号功能设计

有一段时间没有思考代码相关的工作了,最近项目经常碰到不同业务流水号的生成,下面的技术人员每次都针对流水号生成写一些复杂的代码;为了解放以后这方面的工作于是动了一下脑子想一个动态可配置的流水号生产组件,虽然没写代码一段…

时代银通笔试20181023

Java4种访问控制符 Java中的四个访问控制符权限从高到低分别为private、protected、包访问权限和private。访问控制符属于类所有,所以在方法中不能使用访问控制符修饰。访问控制符只能修饰类中的成员变量、成员方法和类本身。 1、private 修饰的成员变量&#xff…

总结Java常见面试题和答案

转载自 总结Java常见面试题和答案 int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。String和StringBuffer的区别? 答:String是不可变的对象&…

ubuntu 13.04 mysql_Ubuntu13.04 下MySQL5.6安装过程

1.mysql下载:按照自己系统选择 http://www.mysql.com/downloads/installer/2.mysql依赖包安装 (libaio1.so) 若已安装可以省略:sudo apt-get install libaio1sudo apt-get install cmake libncurses5-dev bison g (可不选,有问题时再执行)3.组及用户创建:sudo gro…

Exceptionless 本地部署

前两天看到了这篇文章免费开源分布式系统日志收集框架 Exceptionless,亲身体会了下,确实不错,按照官方的文档试了试本地部署,折腾一番后终于成功,记下心得在此,不敢独享。 本地部署官方wiki .NET 4.6.1 这个…

java文件读写

java.io几种读写文件的方式 一、Java把这些不同来源和目标的数据都统一抽象为数据流。 Java语言的输入输出功能是十分强大而灵活的。 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络…

经典笔试编程题--Java实现

转载自 经典笔试编程题--Java实现1.输入一个正数n,输出所有和为n的连续正数序列。 分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值。sum表示真正的和。 初始情况下,min、max和sum 都指…

java虚拟机的内存模型_JVM(Java虚拟机)内存模型(转载/整理)

Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM是为Java字节码定义的一种独立于具体平台的规格描述,是Java平台独立性的基础。对于字节码指令集不感兴趣,直接看寄存器。JVM设置了4个最为常用的寄存器。它们是…

如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”

前言 面向对象的思想已经非常成熟,而使用C#的程序员对面向对象也是非常熟悉,所以我就不对面向对象进行介绍了,在这篇文章中将只会介绍面向对象在F#中的使用。 F#是支持面向对象的函数式编程语言,所以你用C#能做的,用F#…

新华三

百度 新华三 笔试题目 http://www.663395.net/xxs163090/ https://wenku.baidu.com/view/f61a1161ae1ffc4ffe4733687e21af45b307fe7d.html https://blog.csdn.net/qq_36562999/article/details/81436356 https://blog.csdn.net/kyyee/article/details/78090954?locationNum4&…

java面试题及答案(基础题122道,代码题19道)

转载自 java面试题及答案(基础题122道,代码题19道) JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象:  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打…

java aqs详解_Java AQS底层原理解析

AQS底层原理AQS(AbstractQueuedSynchronizer)是一个抽象同步队列,JUC(java.util.concurrent)中很多同步锁都是基于AQS实现的。AQS的基本原理就是当一个线程请求共享资源的时候会判断是否能够成功操作这个共享资源,如果可以就会把这个共享资源设置为锁定状…

在.NET Core程序中设置全局异常处理

以前我们想设置全局异常处理只需要这样的代码: 1 AppDomain currentDomain AppDomain.CurrentDomain;2 currentDomain.UnhandledException new UnhandledExceptionEventHandler(MyExceptionHandler); 但是在.NET Core中并没有AppDomain的相关实现,至少…

matlab 画柱状图

data [0.1869, 0.1900, 0.1878, 0.1847]; b bar(data); ch get(b,children); set(gca,XTickLabel,{非加权聚类欧氏距离类比,非加权聚类马氏距离类比,加权聚类欧氏距离类比,加权聚类马氏距离类比}) set(ch,FaceVertexCData,[1 1 1;1 1 1;1 1 1;1 1 1;])

java释放线程资源_Java线程之释放锁,释放资源,释放CPU

多线程中的wait与sleep到底谁释放了锁首先,多线程中会使用到两个延迟的函数,wait和sleep。wait是Object类中的方法,而sleep是Thread类中的方法。sleep是Thread类中的静态方法。无论是在a线程中调用b的sleep方法,还是b线程中调用a的…

经典的Java基础面试题集锦

转载自 经典的Java基础面试题集锦问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”。 问题:Java里的传引用和传值的区别是什么? 答案:传…

聚类中心选取

https://blog.csdn.net/zhihaoma/article/details/48649489 https://www.cnblogs.com/dudumiaomiao/p/5839905.html

Vue.js先入个门看看

使用vue.js原文介绍&#xff1a;Vue.js是一个构建数据驱动的web界面库。Vue.js的目标是通过尽可能简单的API实现响应式数据绑定和组合的视图组件。vue.js上手非常简单&#xff0c;先看看几个例子&#xff1a; 例一&#xff1a;Helloworld html代码&#xff1a; <div id"…

java path 注解_@PathVariable注解的使用和@Requestparam

一、 PathVariablePathVariable这是一个路径映射格式的书写方式注解&#xff0c;在类映射路径的后加上/{对应方法参数中属性PathVariable("code")中的code}&#xff0c;SuppressWarnings({ "unchecked", "rawtypes" })RequestMapping(value &qu…

近5年133个Java面试题 你会几个?

https://blog.csdn.net/fireblue1990/article/details/73695121 http://www.ablanxue.com/shtml/201608/33470_1.shtml