【python】函数式编程
No1:
函数式编程:即函数可以作为参数传递,也可以作为返回值
No2:
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回
No3:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
No4:
排序
No5:
函数作为返回值,每个返回值函数式不一样的(应该是对象地址不一样)
No6:
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量
原因就在于返回的函数引用了循环变量,但它并非立刻执行,所以循环变量都是最后一个值
解决方案
这样f(i)就会立即执行
No7:
匿名函数
No8:
decorator在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
@log
放到now()
函数的定义处,相当于执行了语句:
now = log(now)
3层嵌套的效果是这样的:
now = log('execute')(now)
No9:
偏函数:functools.partial
的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
No10:
一个.py文件就称之为一个模块(Module)
每一个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是它所在的包名
系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块
No11:
模块调用
#!/usr/bin/env python3
#可以让这个hello.py文件直接在Unix/Linux/Mac上运行
# -*- coding:utf-8 -*- ' a test module '
#任何模块代码的第一个字符串都被视为模块的文档注释 __author__ = 'Wang Lei' import sys
import greet def test():
args = sys.argv
if len(args)==1:
print('Hello,world')
elif len(args)==2:
print('Hello,%s!' % args[1])
else:
print('Too many arguments!') if __name__=='__main__':
#test()
print(greet.greeting('wa'))
#!/usr/bin/env python3
# -*- coding:utf-8 -*- ' a test module ' __author__ = 'Wang Lei' def _private_1(name):
return 'Hello,%s' % name def _private_2(name):
return 'Hi,%s' % name def greeting(name):
if len(name)>3:
return _private_1(name)
else:
return _private_2(name)
运行结果
PS D:\wanglei\python> python hello.py
Hi,wa
No12:
安装常用模块
anaclnda地址:https://www.anaconda.com/download/#windows
安装好以后要把anaclnda的路径和其下的scripts路径添加到环境变量即可通过import 引入任何第三方模块
【python】函数式编程的更多相关文章
- Python函数式编程:从入门到走火入魔
一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...
- python函数式编程,列表生成式
1.python 中常见的集中存储数据的结构: 列表 集合 字典 元组 字符串 双队列 堆 其中最常见的就是列表,字典. 2.下面讲一些运用循环获取字典列表的元素 >>> dic={ ...
- (转)Python函数式编程——map()、reduce()
转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...
- python 函数式编程学习笔记
函数基础 一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行.函数的主要作用: 最大化的代码重用和最小化代码冗余 流程的分解 一般地,函数讲的流程是:告诉你怎样去做某事,而不是让你 ...
- python 函数式编程:高阶函数,map/reduce
python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...
- Python函数式编程(进阶2)
转载请标明出处: http://www.cnblogs.com/why168888/p/6411915.html 本文出自:[Edwin博客园] Python函数式编程(进阶2) 1. python把 ...
- Python函数式编程——map()、reduce()
文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...
- python函数式编程之返回函数、匿名函数、装饰器、偏函数学习
python函数式编程之返回函数 高阶函数处理可以接受函数作为参数外,还可以把函数作为结果值返回. 函数作为返回值 def laxy_sum(*args): def sum(): ax = 0; fo ...
- Python函数式编程简介
参考原文 廖雪峰Python函数式编程 函数 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程 ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
随机推荐
- C#一元二次方程
- jquery easyui datagrid 加每页合计和总合计
jquery easyui datagrid 加每页合计和总合计 一:效果图 二:代码实现 这个只有从后台来处理 后台根据rows 和page两个参数返回的datatable 命名为dt 然后根据dt ...
- Let the Balloon Rise <map>的应用
Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the ...
- poj3662 二分+最短路
/* 给定一张无向图,要求找到1-n的路径,该路径上第k+1大的边是所有路径上最小的 如果没有1-n的路,那么输出-1 二分答案mid,遍历一次所有边,如果边权小于mid,则设为0,大于mid,则设为 ...
- jmeter 控制线程组执行顺序
这个要配合全局变量.if和while来实现BeanShell取样器,全局变量:${__setProperty(newswitch,${switch1},)}if条件:"${__P(newsw ...
- 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)
论文源址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn 摘要 在PASCAL VOC数据集上,最好的方法的思路是将低级信息与较高层次的上下文信息进 ...
- 眼底血管分割训练函数(SVM,Adaboost)
# -*- coding: utf-8 -*- import numpy as np from sklearn import svm from sklearn.model_selection impo ...
- Python内置模块之time模块
1:概述 时间表示的分类 时间戳 格式化的时间字符串 结构化时间 时间戳:时间戳表示的是从1970年1月1日整0点到目前秒的偏移量,数据类型是浮点型,主要用来让计算机看的 格式化的时间字符串:如 20 ...
- Atom插件下载失败解决办法
转自:http://www.cnblogs.com/20145221GQ/p/5334762.html#正题 一般方法(Atom自动安装) 打开Atom >> Packages >& ...
- win10远程桌面出现身份验证错误。要求的函数不受支持
打开组策略,依次展开“计算机配置”->“管理模板”->“系统”->“凭据分配”,设置名称: “加密 Oracle 修正” 为已启用,并设置保护级别为“易受攻击”