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年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
随机推荐
- python中的可变与不可变对象
Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一 ...
- iOS获取ipa素材、提取ipa包资源文件
当我们看到一款优秀的App时,我们可能对它的一些素材比较感兴趣,或者我们也想仿写一款类似app,那么怎么能获取到它的素材资源文件呢? 下面我以ofo举例: 1.打开iTunes,搜索ofo关键字,选择 ...
- vijos1090题解
题目: 有n个正整数排成一行.你的目的是要从中取出一个或连续的若干个数,使它们的和能够被k整除. 例如,有6个正整数,它们依次为1.2.6.3.7.4.若k=3,则你可以取出1.2.6,或者2.6.3 ...
- SQL执行过程中的性能负载点
一.SQL执行过程 1.用户连接数据库,执行SQL语句: 2.先在内存进行内存读,找到了所需数据就直接交给用户工作空间: 3.内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到 ...
- 同一个tomcat多个项目共享session,一个tomcat两个项目共享sessionId
同一个tomcat多个项目共享session,一个tomcat两个项目共享sessionId >>>>>>>>>>>>>& ...
- Tomcat服务器无法启动socket监听端口
最近生成一个新的web服务器,在启动后无法启动socket监听,检查程序本身无问题, 找原因,只是发布时搞错.处理如下: 1.在Eclipse平台 删除原来的web server; 2.新建serve ...
- Java系列 – 用Java8新特性进行Java开发太爽了(续)
本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome-2/ 前言 上周, 我们谈论了关于Ja ...
- 中国(北方)大学生程序设计训练赛(第一周) (D E)
比赛链接 D题是个二分,每次check复杂度为O(n),类似于xdu_1068,只是一个是求积,一个是求商 #include<bits/stdc++.h> using namespace ...
- Java-认识变量、注释并能及时发现错误
package com;//变量的演示public class VarDemo { public static void main(String[] args) { /* * 1)题目不用抄 2)注释 ...
- GoWorld – 用Golang写一个分布式可扩展、可热更的游戏服务器
GoWorld代码:https://github.com/xiaonanln/goworld Golang具有运行效率高.内存安全等优良特性,因此是非常适合用来进行服务器开发.使用Golang开发游戏 ...