Python 第五天
函数式编程
高阶函数
1.变量可指向函数
func = abs
print(func(-1)) #1
2.函数可以作为参数传入另外的函数这也就是高阶函数
def add(x,y,func):
print(func(x) + func(y))
arr1,arr2 = (1,2),(2,3)
add(arr1,arr2,list) #[1,2,2,3]
map() 与 reduce()
1.map() 函数接收两个参数,一个函数,一个 Iterable ,map() 函数会将函数作用于 Iterable 并把结果作为新的 Iterable 返回
def func(x):
return x * x
ita = [1,2,3,4,5,6]
print(list(map(func,ita)))
2.reduce() 函数接收两个参数,一个至少有两个参数的函数,一个序列。reduce() 函数会把结果和序列的下一个元素做积累计算。reduce() 函数需要从 functools 模块进行引用
from functools import reduce
def f(x,y):
return 10 * x + y
def char2num(s):
return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
r = reduce(f,map(char2num,'13547'))
print(r)
filter()
filter() 函数接收两个参数,一个函数,一个序列。filter() 把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
def is_odd(x):
return x and x.strip()print(list(filter(is_odd,['0','',none,'A'])))
sorted()
sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。它接收两个参数,一个序列,一个可选参数 key 函数作为排序参数依据
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(L):
return sorted(L,key=lambda L: L[1])print(by_score(L))
返回函数
函数可以作为函数返回值
from functools import reduce
def sun_in(L):
def a(x,y):
return x + y
def sum():
print(reduce(a,L))
return sumfunc = sun_in(list(range(0,11)))
func()
闭包问题
再创建一个函数,用该函数的参数绑定循环变量当前的值,可以解决闭包问题def count():
fs = []
def f(j):
def g():
return j**2
return gfor i in range(0,3):
fs.append(f(i)) return fs
f1,f2,f3 = count()
print(f1(),f2(),f3())
匿名函数
匿名函数 lambda x:x * x
print(list(map(lambda f : f**3 , [1,2,3])))
装饰器
在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wraaper(*args,**kw):
print('%s %s()' % (text,func.__name__))
return func(*args,**kw)
return wraaper
return decorator
@log('调用')
def pr(text):
print(text)
pr(input('请输入随便什么东西:'))
偏函数
functools.partial可以帮助我们返回新的偏函数,即把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
import functools
def func(a,b,c=2):
print(a ** c + b ** c)
newfunc = functools.partial(func,c=1)
func(2,2) #8
newfunc(2,2) #4
Python 第五天的更多相关文章
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python(五)编程小实例
Python(五)编程小实例 抓取网页信息,并生成txt文件内容! Python抓取网页技能--Python抓取网页就是我们常看见的网络爬虫,我们今天所要用到的就是我们Python中自带的模块,用这些 ...
- 初学Python(五)——元组
初学Python(五)——元组 初学Python,主要整理一些学习到的知识点,这次是元组. #-*- coding:utf-8 -*- #定义元素 t = (1,2,3) #添加元素 #删除元素 #更 ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
- 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...
- 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库
孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- 孤荷凌寒自学python第五十五天初识MongoDb数据库
孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
随机推荐
- Vue.js入学教程
Vue.js是什么Vue.js 是用于构建交互式的 Web 界面的库.Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单.灵活的 API.Vue.js(类似于view)是一套构建 ...
- java 关于 hashmap 的实现原理的测试
网上关于HashMap的工作原理的文章多了去了,所以我也不打算再重复别人的文章.我就是有点好奇,我怎么样能更好的理解他的原理,或者说使用他的特性呢?最好的开发就是测试~ 虽说不详讲hashmap的工作 ...
- DELPHI下的SOCK编程
DELPHI下的SOCK编程(转自http://www.cnblogs.com/devcjq/articles/2325600.html) 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会 ...
- ubuntu输入某个目录测试该目录里.C文件里代码行数shell脚本
#!/bin/bash echo "★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★" echo "★☆ 统计代码行数 ☆★&qu ...
- Execution failed for task':app;clean'
Execution failed for task':app;clean' >Unable to delete directory:f:xxxxxbuild\output\apk当程序出先这个错 ...
- Servlet转发到JSP页面的路径问题
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
- A----奇怪的玩意
题目: 我们的化学生物学家发明了一种新的叫stripies非常神奇的生命.该stripies是透明的无定形变形虫似的生物,生活在果冻状的营养培养基平板菌落.大部分的时间stripies在移动.当他 ...
- React-native初体验(安卓篇)
本篇文章主要包括两方面,如何从0开始把RN(react-native)项目整合进入现有Android项目,以及我们做的第一个RN的上线项目遇到的一些坑. 初次做RN项目,我们选择做了一个逻辑相对简单的 ...
- TestFlight使用方法
1 说明 目前IOS版本APP上架前,很少有项目对上架包进行测试,而上架包是人工打包的,很有可能之前的测试包没有问题,可打出的上架包出现问题.苹果市场是有提供对上架包内部测试的,可以对上架包进行测试, ...
- 关于线程和junit注入失败的问题
问题: 在使用spring的时候,通常会使用注释@Autowired或@Resource注入java Bean; 但是在碰到线程类和测试类的时候就不支持注入方式了. 定义: 线程类:继承thread或 ...