python的函数式编程玩法+年末小感
从小老师教编程语言就告诉分两种:面向过程和面向对象,正如同小学电脑课面对的是win95,仿佛世界上windows就是操作系统的别名,如今还是这样,高校的计算机中心都是windows,所以linux是要自己搞起,函数式编程也是要自己搞起的~不为学分不为奖学金不为工资只是追随着自己的兴趣,这才是最开心的哈~
python有一大优点,就是既可以面向对象也可以面向过程还可以函数式搞起,因此想体验函数式编程的乐趣不用换erlangh或scheme。函数式编程的特点:
1. 变量不可变;
2. 闭包性;
按照函数式编程的特点,一个函数只接受输入并产生输出,不会改变外部变量的值也不会用到外部变量的值。也正因为这样,函数式编程一个函数只做一件事儿,方便模块化,而且代码量要少一些。
1.lambda
lambda是匿名函数,没有函数名,在闭包里和map reduce中很好用。下面是求两数乘积的函数:
- >>>func=lambda x,y:x*y
- >>>func(3,4)
- 12
2.map
map函数是对一个序列的每个项依次执行函数,下面是对一个序列每个项都乘以2:
- >>> a=map(lambda x:x*2,[1,2,3])
- >>> list(a)
- [2, 4, 6]
3.reduce
reduce函数是对一个序列的每个项迭代调用函数,下面是求3的阶乘:
- >>> functools.reduce(lambda x,y:x*y,range(1,4))
- 6
好了,这就是python函数式编程常用的几个函数,现在用一个求n的阶乘的例子对比一下函数式编程和面向过程的编程的区别:
- >>> def func(n):
- ... if n==1:
- ... return 1
- ... return n*func(n-1)
- ...
- >>> func(4)
- 24
- >>> g=lambda n:functools.reduce(lambda x,y:x*y,range(1,n+1))
- >>> g(4)
- 24
非常简洁干净~然后再看一下函数式编程的闭包:
- >>> def funA():
- ... x=0
- ... def funB():
- ... nonlocal x
- ... x+=1
- ... print(x)
- ... return funB
- ...
- >>> a=funA()
- >>> a()
- 1
- >>> a()
- 2
- >>> a()
- 3
闭包就是函数中又定义函数,里面的函数可以使用外部作用域内的变量,但不是全局变量,所以一次创建外部函数,则多次调用内部函数时外部作用域内的变量还是有效的;多次运行外部函数,则会重新创建闭包,原来外部变量的值也不会受到影响,如上例可以实现每次调用内部函数是的外部变量+1操作。这里说一下作用域的事儿,原来的python2只有全局作用域和局部作用域,python3新增的nonlocal作用域就是专门针对闭包的,nonlocal声明的变量只能访问外部作用域的变量,不能访问全局作用域的变量,这样就不用全局变量搞来搞去错都不知道哪里出的了。
这篇文章写完了,在2013的最后祝自己和大家新年愉快,为兴趣而活~哈哈
python的函数式编程玩法+年末小感相关推荐
- 白话 Python 的函数式编程
今天和大家聊聊 Python 的函数式编程特性.所谓函数式编程,就是指代码中每一块都是不可变的(immutable),都是由 pure function 的形式组成.这里的 pure function ...
- 05 python 要点 (函数式编程)
复习时先看看这个:https://blog.csdn.net/weixin_39880623/article/details/110153616? 第一章 函数式编程 一.生成器 (generato ...
- python采用函数式编程模式吗_Python函数与函数式编程
1 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创 ...
- Python的函数式编程--从入门到⎡放弃⎦
很早以前就听说过了函数式编程,印象中是一种很晦涩难懂的编程模式,但却一直没有去进行了解. 恰好这周组内的周会轮到我主持,一时也没想到要分享什么.灵光一闪,就选定函数式编程这个主题吧,反正组里的同事都没 ...
- 【Python】函数式编程
前言 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本 ...
- 用python处理excel数据做函数_如何使用python通过函数式编程完成excel中的数据处理及分析工作...
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...
- 「C#」异步编程玩法笔记-WinForm中的常见问题
目录 1.异步更新界面 1.1.问题 1.2.解决问题 1.3.AsyncOperationManager和AsyncOperation 1.4.Invoke.BeginInvoke.EndInvok ...
- 函数式编程|python的函数式编程
面向过程,面向对象 面向过程: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 面向对象: 把问题中的事务分解成各个对象,建立对象的目的不是为了完成一 ...
- python学习——函数式编程——高阶函数
python学习--函数式编程--高阶函数 函数式编程(高阶函数):1:map && reduce; 2 : filter; 3: sorted; ------------------ ...
最新文章
- 英文题,我恨你啊..
- putty-psftp
- HANDLE:句柄的概念
- Ubuntu下使用WebStorm开发nodejs(一)
- 为什么需要架构图,怎么画?
- 264标准中高复杂度的三方面
- 您好GroovyFX
- 编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。...
- Java开发中遇到具有挑战的事_170道Java工程师面试题,你敢挑战吗?
- java 解析excle
- LINUX SHELL如何递归访问目录(处理包含空格的文件名)
- MarkDown思维导图
- 计算机控制plc应用论文,PLC自动控制系系统在变频器中的运用
- 商场三十六计——第29计 “树上开花”
- 在计算机系统中对文件执行彻底删除,怎么让电脑删除文件时可以直接彻底进行删除...
- 如何让IE浏览器提示下载文件,而不是直接打开Excel文件
- 2022年中国农业现代化发展现状
- 华为2018软赛心得(西北36强)
- 《工程电磁场》学习笔记2-恒定电场
- python中计数器的用法_python – 使用单例作为计数器
热门文章
- 【开发环境】PyCharm 配置 GitHub ( 从 GitHub 中 Clone 代码到 PyCharm 开发环境中 )
- 【SeeMusic】音频编辑 ( 进入音频编辑页面 | 音频延迟设置 )
- 【Android 电量优化】电量优化 ( JobScheduler | JobService | AsyncTask )
- [SQL] 外卖系统数据库设计
- Python 序列化
- Express调用mssql驱动公共类dbHelper
- Hibernate的四种典型例子(增删改查)
- JMS详细的工作原理
- Android画图之Matrix(一)
- OpenGL之glMatrixMode函数的用法