面向函数编程

面向过程编程(pop),面向对象编程(oop),函数式编程(fp) 1、概念 面向过程编程(procedure oriented Programming)(POP) 面向对象编程(object oriented programming)(OOP) 函数式编程(functional programming)(FP) 2、解释 面向过程编程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象编程是... 阅读详情

一、定义

        把程序分解成一系列函数,每个函数接收输入参数并返回输出结果,强调函数的纯粹性,即相同的输入必然产生相同的输出,且不产生可观察的副作用(例如不修改全局变量、不进行 I/O 操作等)。

二、优缺点

        1.优点:

                (1)可维护性高。体现在函数行为的确定性和模块独立性。面向函数编程强调使用纯函数,相同的输入总是产生相同的输出,这使得代码的行为更容易预测;函数是独立的逻辑单元,只依赖于输入参数,不依赖于外部状态。

                (2)更易进行并发编程。体现在无共享状态和函数并行执行。面向函数编程中,由于数据不可变且函数没有副作用,不存在多个线程同时访问和修改共享数据的问题,因此在并发环境下不会出现竞态条件和死锁等问题;纯函数可以在不同的线程或进程中并行执行,因为它们之间没有相互依赖和干扰。

                (3)代码复用性更好。体现在函数通用性和函数组合性。面向函数编程中的函数通常具有较高的通用性,可以被多个不同的模块或程序使用。只要输入参数的类型和格式符合要求,函数就可以正确地工作;面向函数编程鼓励将简单的函数组合成复杂的函数,这种组合方式可以在不同的场景中重复使用。

        2.缺点

                (1)表达能力受限。对于一些复杂的现实世界对象,面向函数编程可能难以直接进行建模;面向函数编程中,数据和操作数据的函数是分离的,虽然可以通过模块等方式来实现一定程度的封装,但相比面向对象编程中类的封装性,还是略显不足。

                (2)性能开销。面向函数编程中,函数的调用可能会带来一定的性能开销,特别是在频繁调用函数的情况下。使用不可变数据结构时,每次修改数据都需要创建一个新的副本,这可能会占用更多的内存空间,并且在处理大规模数据时,可能会导致性能下降。

三、示例代码

        通过代码来进一步了解面向函数编程。

        1.基本结构:func 为函数关键字 execFun1为函数名称

        

        2.函数中的参数:命名参数和非命名参数

        

                2.1命名参数和非命名参数的调用:

                

        3.带有返回值

        

        4.参数中既有非命名参数和命名参数时,应该注意的问题:*命名参数的后面不能有非命名参数。

        

        5.递归函数:自己调用自己。分为两个阶段:1.调用阶段;2.返回阶段。

        

        运行结果:

        

        6.同名变量:按照就近原则

        

        运行结果:

        

        7.方法重载:方法名相同,参数列表不同,与返回值类型无关,具体调用哪个参数,由参数列表决定。

        

        运行结果:

        

        8.将函数赋值给一个变量

        

        运行结果:

        

        9.一个函数可以作为另一个函数的参数

        

        运行结果:

        

        10.函数嵌套,函数里面也可以再定义函数

        

        运行结果:

        

四、全局变量和局部变量

        1.全局变量:在函数外部、整个程序的顶层定义的变量称为全局变量。全局变量的作用域是整个程序,也就是说,在程序的任何函数内部都可以访问全局变量。

        2.局部变量:在函数内部或代码块中定义的变量称为局部变量。它们的作用域仅限于定义它们的函数或代码块,也就是说,在函数或代码块外部,无法访问这些局部变量。

面向函数式编程-讲解 主要讲解函数式编程好处和优缺点。 主要讲解函数式编程好处和优缺点。 主要讲解函数式编程好处和优缺点。 立即下载

相关推荐

面向Java开发者的函数式编程

NULL 博文链接:https://love2java.iteye.com/blog/1621720

JAVA的面向函数编程

Java是一种支持多种编程范式的语言,包括面向对象编程(OOP)和面向函数编程(FP)。面向函数编程是一种编程范式,它强调将计算视为函数求值,避免更改状态和可变数据。它的核心思想是函数是第一类对象,可以作为变量传递、存储和返回,也可以作为参数传递给其他函数。Java在支持函数式编程方面已经取得了一些进展。在Java 8中,引入了lambda表达式和函数式接口,这使得Java可以支持类似于其他函数式编程语言(如Scala和Haskell)的编程模式。

小金的优快云博客 1014

RAGFlow API 实战指南:从数据集管理到智能对话

本文提供了RAGFlow API的实战指南,详细介绍了如何从零开始构建基于检索增强生成(RAG)的智能应用。内容涵盖环境准备、API密钥获取、核心概念理解,以及通过API进行数据集创建与管理、文档上传解析、知识块管理、检索测试,最终创建并配置智能聊天助手,实现基于私有知识库的精准对话。

weixin_29284885的博客 379

面向过程(函数)编程

面向过程(函数)编程

weixin_42820765的博客 922

智能体在车联网中的应用:一份详尽到每日的100天学习路线图

这100天的旅程,是一次对毅力、学习方法和工程实践能力的综合考验。它不仅关乎掌握一系列技术点,更关乎培养解决复杂系统性问题的思维模式——将宏观的交通需求分解为微观的智能体决策,再通过多智能体协同涌现出宏观的智能行为。当你完成这份大纲时,你将拥有的不仅是一个项目作品集,更是一套应对“智能体+车联网”乃至更广泛AI+垂直领域挑战的方法论。未来已来,期待你成为构建智能交通新生态的关键贡献者。

IT深耕十余载,大道之简 1332

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

01JS基础_面向函数式编程

函数式编程概念 为什么要学习函数式编程 函数式编程随着react的流行受到越来越多的关注 Vue3也开始拥抱函数式编程 函数式编程可以抛弃this 打包过程中可以更好的利用tree shaking过滤无用代码 方便测试, 方便并行处理 有很多库可以帮助我们继续函数式开发:lodash、underscore、ramda 什么是函数式编程 函数式编程(FB),是编程范式之一, 我们常听说的编程还有面向过程编程、面向对象编程 思维方式: 把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行

yuan 685

052、联发科Imagiq HyperEngine架构适配:天玑9000/9200的ISP多核并行调度与Tuning Toolkit调优案例

摘要: 项目组在适配联发科天玑9200的Imagiq 890 ISP架构时,遇到多摄预览功耗过高、帧率不稳等问题。通过分析多核调度机制,调整辅核QoS通道、优化AI-ISP协同模式(采用FREERUN+运动补偿),并利用Tuning Toolkit的Pipeline Viewer动态分配负载,最终降低功耗30mA、提升画质。关键经验包括:避免多核带宽冲突、合理配置动态时钟策略,以及统一校准参数版本管理。天玑9000/9200的HyperEngine架构需优先理解多核协同逻辑,再针对性调优,否则易引发场景兼容

zzfmlxs的博客 36

面向对象编程与面向过程编程和函数式编程之间的区别

是现在流行的编程范式(编程风格)。。随着面向对象编程的出现,面向过程编程已经逐渐退出了历史舞台,函数式编程目前还没有被程序员广泛接受,只能作为面向对象编程的补充。为了更好地理解面向对象编程,我们在本节中补充讲解面向过程编程和函数式编程,并且将面向对象编程与面向过程编程和函数式编程进行对比。

红军不怕远征难,万水千山只等闲 3291

2023年高教社杯 | 2023年高教社杯全国大学生数学建模思路(A题思路、C题思路)

2023年高教社杯 | 2023年高教社杯全国大学生数学建模思路(A题思路、C题思路)

前程算法屋的博客 624

7.6 GPU页表更新机制

本文分析了AMDGPU驱动中BO到VA映射的页表更新实现机制。核心流程通过amdgpu_vm_bo_update()函数触发,支持CPU直接写入和SDMA异步命令两种更新模式。系统根据VRAM可见性自动选择最优更新策略,处理三种主要场景:命令提交、BO迁移和BO销毁。关键实现包括DMA地址数组处理、权限标志合并和BO迁移状态转换,最终通过amdgpu_vm_update_range()完成硬件页表更新。该机制有效平衡了更新延迟与吞吐量,为GPU虚拟内存管理提供基础支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 2466

面向函数式编程

面向函数式编程@FunctionalInterface 1:面向函数式编程四大点: /** * 面向函数式编程 * 1 拷贝方法的后面小括号(有参数就带参数),写死右箭头,落地大括号(内写方法的实现)---lambda表达式 * 2 本质就是接口中只有一个方法时,jdk8 会自动在接口上默认@FunctionalInterface * 3 default 就是在接口定义方法上,实现...

weixin_45592335的博客 746

数据挖掘在人力资源分析中的实战案例

在当今竞争激烈的商业环境中,人力资源管理对于企业的成功至关重要。有效的人力资源管理能够提高员工绩效、降低员工流失率、优化人才招聘等。而数据挖掘技术为人力资源管理提供了强大的工具,通过对大量人力资源数据的分析,可以发现潜在的规律和模式,为企业的决策提供有力支持。本文的目的是通过实际案例展示数据挖掘在人力资源分析中的具体应用,涵盖员工绩效预测、人才招聘筛选、员工流失分析等多个方面。通过详细的案例分析,帮助读者理解数据挖掘技术在人力资源管理中的实际操作和应用价值。

移动开发前沿的博客 489

面向过程编程、面向对象编程、面向函数编程???

面向过程也可称之为面向记录,即分析出解决问题所需要的步骤,然后用函数将这些步骤一步一步实现,使用的时候一个一个按顺序调用即可。对象指具体的某一个事物,在面向对象程序设计中,对象指系统中的某一个成分,包括数据和行为。面向对象,就是将数据和与之相关的方法封装,让对象集在系统中相会作用,完成设计人员的预定功能。

qq_44912666的博客 343

YOLOv8 PCB缺陷检测系统全流程实战:从开发到UI展示详解

毕设路上难免有波折,但只要跟着这个教程把“数据集处理、模型训练、UI开发”每一步都落实,你就已经超越了大多数同学。这个“PCB缺陷检测系统”既有技术深度(YOLOv8是工业级主流算法),又有工程价值(解决电子制造的实际痛点),还具备出色的可视化展示——这样的毕设,拿高分是水到渠成的事。

FJN110的博客 214

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

《JavaScript函数式编程思想》——从面向对象到函数式编程

第9章  从面向对象到函数式编程 假如本书的写作时间倒退回十年前,书名可能会变成JavaScript面向对象编程思想。自上世纪90年代兴起的面向对象编程思想随Java的繁荣达于顶点,在JavaScript从一门只被用来编写零星的简单的表单验证代码的玩具语言变成日益流行的Web应用不可取代的开发语言的过程中,脚本的作者们也逐渐学习和习惯了被视为软件开发正统的面向对象编程。等到盛极而衰,面向对象编程...

JavaScript 3360

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

常见的编程范式-面向过程,面向对象,函数式编程,响应式编程

编程范型提供了程序员对程序执行的看法。例如,在面向对象编程中,程序是一系列相互作用的对象。在面向过程编程中,程序是一系列步骤的组合的过程,先执行那个步骤,然后执行那个步骤,最后在执行那个步骤。在面向函数式编程中,一个程序会被看作是一个无状态的函数计算的序列,函数可以作为参数,返回值。在响应式编程中,程序被看作是数据流和以及其传播的过程。 面向过程编程 使用过C语言,我们就能深刻体会面向过程编程。我们会把一个任务分成若干个步骤,先执行哪一步,然后执行哪一步,最后执行哪一步,就相当于生产线,吭哧吭哧执行完,任务

wfeii的博客 1508

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

面向函数编程与面向过程编程。

只是,系统状态参数的设计与选择是复杂而困难的,系统状态参数的安全与稳定是需要系统设计保护的,系统的其他部分都是简单而规范的。面向过程的编程,最大的优势是系统设计清楚而明晰,系统调度简单易懂,系统触发器的设计简化而高效。面向函数编程,其编程范式的输入是调用参数、也叫参数传递,输出是函数返回、既包括计算结果的返回值也包括函数占用资源的释放,其他信息都被封装在函数内部、与调用者无关。可以看出,从信息封闭的角度,函数是个非常有效的范式模型:调用者只需要关心输入输出,其他的都由函数实现负责;

luj_1768的博客 329

我对函数式编程、面向对象和面向过程三者的理解

从开始学习程序设计,这三个词依次随着开发语言出现在我的世界里,虽然一路在进阶升级打怪,但是一直缺少对三者深入思考理解的过程,知道的都是从各个知识获取途径的观念,还未形成自己的认知,直到被米boss问道,区别是什么,突然懵了,把那些已知的概念搬出来,讲给米boss,看到眼神的那一刻我知道,我又没理解正确。也是经过这段时间思考了,虽然不知道是否理解正确,但是写写自己的认知吧,这样万一有天开窍了,还知道错到什么地方,如果各位大神看出了什么理解偏颇之处,恳请各位大神赐教。 面向过程(PO) ...

漫漫长途,终有回转;余味苦涩,终有回甘 5755

函数式编程、面向对象编程、面向过程编程

函数式编程: 它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式。 1. 代码简洁,开发快速 函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。 2. 接近自然语言,易于理解 函数式编程的自由度很高,可以写出很接近自然语言的代码。 前文曾经将表达式(1 + 2) * 3 - 4,写成函数式语言:   subtract(multiply(add(1,2), 3), 4) 对它进行变形,不难得到另一种写法:

gaofan_long的博客 2008

面向对象与面向过程、函数式编程

本文比较了三种编程范式在Vue3中的应用:面向过程、面向对象和函数式编程。面向过程通过组合式API实现数据和逻辑分离,适合简单场景;面向对象采用类封装数据和方法,适合复杂业务;函数式编程强调纯函数和不变性,通过Vue响应式系统实现状态管理。实际开发中可混合使用这些范式,如用面向过程处理简单逻辑,用面向对象封装复杂业务模型。Vue3的组合式API灵活支持这些范式,开发者可根据需求选择最佳实践。

睡不着的可乐博客 662

面向过程、面向对象与面向函数编程浅谈

本文对比了三种编程范式:面向过程、面向对象和面向函数编程。面向过程关注执行步骤,适合简单线性任务;面向对象强调对象交互,适合大型项目;面向函数聚焦数据流处理,擅长并发场景。三者各有特点:面向过程效率高但复用性差,面向对象扩展性好但复杂度高,面向函数简洁但调试困难。实际开发中应根据项目需求灵活选择或混合使用,如性能关键用面向过程,复杂业务用面向对象,数据处理用函数式。理解各范式的核心思想(怎么做/谁做/谁能做)是选择合适编程方式的关键。

墨言的博客 1万+

[Scala] 函数式编程 vs 面向对象编程

什么是函数式编程?在维基百科中给出了详细的定义,函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。 而在面向对象编程中,面向对象程序设计(...

1.02^365的成长裂变 3万+

函数式编程与面向对象编程

一、函数式编程与面向对象编程的优缺点 1、函数式编程的优缺点 (1)、函数式编程的优点: ①、由于数据全部都是不可变的,所以没有并发编程的问题,多线程是安全的。 ②、对于快速迭代的项目来说,函数式编程可以实现函数与函数之间的热切换而不用担心数据的问题,因为它是以函数作为最小单位的,只要函数与函数之间的关系正确即可保证结果的正确性。 ③、函数式编程的表达方式更加符合人类日常生活中的语法,代码可读性更强。 ④、实现同样的功能,函数式编程所需要的代码比面向对象编程要少很多,代码更加简洁明晰。(2)、函数式编程

青蛙king的博客 2673

函数式编程与面向对象编程的区别

定义 函数式编程:以函数思维做为核心,在这种思维的角度去思考问题。这种编程最重要的基础是λ演算,接受函数当作输入和输出。 面向对象编程:这种编程是把问题看作由对象的属性与对象所进行的行为组成。基于对象的概念,以类作为对象的模板,把类和继承作为构造机制,以对象为中心,来思考并解决问题。 函数式编程 支持 闭包:一个函数内定义另一个函数 高阶函数:参数作为函数,或者返回值作为函数的函数...

她的坏机器人 4043

函数式编程与面向对象编程的对比

1.背景介绍 函数式编程和面向对象编程是两种不同的编程范式,它们在编程思想、编程方法和编程实践上有很大的区别。函数式编程强调函数作为一等公民,将数据处理为纯粹的函数组合。而面向对象编程则将数据和操作数据的方法封装在对象中,通过对象之间的互动来实现程序的功能。 在本文中,我们将从以下几个方面来对比函数式编程和面向对象编程: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模型公式...

AI天才研究院 1564
上一篇: 设计模式--模板模式
下一篇: lambda表达式
w_zero_one
博客等级 码龄2年 149粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值