1.复习

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
name = 'alex' #name=‘lhf’
def change_name():
name='lhf'
# global name
# name = 'lhf'
# print(name)
# name='aaaa' #name='bbb'
def foo():
# name = 'wu'
nonlocal name
name='bbbb'
print(name)
print(name)
foo()
print(name) change_name()

2.匿名函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# def calc(x):
# return x+1 # res=calc(10)
# print(res)
# print(calc) # print(lambda x:x+1)
# func=lambda x:x+1
# print(func(10)) # name='alex' #name='alex_sb'
# def change_name(x):
# return name+'_sb'
#
# res=change_name(name)
# print(res) # func=lambda x:x+'_sb'
# res=func(name)
# print('匿名函数的运行结果',res) # func=lambda x,y,z:x+y+z
# print(func(1,2,3)) # name1='alex'
# name2='sbalex'
# name1='supersbalex' # def test(x,y,z):
# return x+1,y+1 #----->(x+1,y+1) # lambda x,y,z:(x+1,y+1,z+1)

3.作用域

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# def test1():
# print('in the test1')
# def test():
# print('in the test')
# return test1
#
# # print(test)
# res=test()
# # print(res)
# print(res()) #test1() #函数的作用域只跟函数声明时定义的作用域有关,跟函数的调用位置无任何关系
# name = 'alex'
# def foo():
# name='linhaifeng'
# def bar():
# # name='wupeiqi'
# print(name)
# return bar
# a=foo()
# print(a)
# a() #bar()

4.函数式编程

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
#高阶函数1。函数接收的参数是一个函数名 2#返回值中包含函数
# 把函数当作参数传给另外一个函数
# def foo(n): #n=bar
# print(n)
# #
# def bar(name):
# print('my name is %s' %name)
# #
# # foo(bar)
# # foo(bar())
# foo(bar('alex'))
#
#返回值中包含函数
# def bar():
# print('from bar')
# def foo():
# print('from foo')
# return bar
# n=foo()
# n()
# def hanle():
# print('from handle')
# return hanle
# h=hanle()
# h()
#
#
#
# def test1():
# print('from test1')
# def test2():
# print('from handle')
# return test1()

4.map函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# num_l=[1,2,10,5,3,7]
# num1_l=[1,2,10,5,3,7] # ret=[]
# for i in num_l:
# ret.append(i**2)
#
# print(ret) # def map_test(array):
# ret=[]
# for i in num_l:
# ret.append(i**2)
# return ret
#
# ret=map_test(num_l)
# rett=map_test(num1_l)
# print(ret)
# print(rett) num_l=[1,2,10,5,3,7]
#lambda x:x+1
def add_one(x):
return x+1 #lambda x:x-1
def reduce_one(x):
return x-1 #lambda x:x**2
def pf(x):
return x**2 def map_test(func,array):
ret=[]
for i in num_l:
res=func(i) #add_one(i)
ret.append(res)
return ret # print(map_test(add_one,num_l))
# print(map_test(lambda x:x+1,num_l)) # print(map_test(reduce_one,num_l))
# print(map_test(lambda x:x-1,num_l)) # print(map_test(pf,num_l))
# print(map_test(lambda x:x**2,num_l)) #终极版本
def map_test(func,array): #func=lambda x:x+1 arrary=[1,2,10,5,3,7]
ret=[]
for i in array:
res=func(i) #add_one(i)
ret.append(res)
return ret # print(map_test(lambda x:x+1,num_l))
res=map(lambda x:x+1,num_l)
print('内置函数map,处理结果',res)
# for i in res:
# print(i)
# print(list(res))
# print('传的是有名函数',list(map(reduce_one,num_l))) msg='linhaifeng'
print(list(map(lambda x:x.upper(),msg)))

5.filter函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
movie_people=['sb_alex','sb_wupeiqi','linhaifeng','sb_yuanhao'] # def filter_test(array):
# ret=[]
# for p in array:
# if not p.startswith('sb'):
# ret.append(p)
# return ret
#
# res=filter_test(movie_people)
# print(res) # movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']
# def sb_show(n):
# return n.endswith('sb')
#
# def filter_test(func,array):
# ret=[]
# for p in array:
# if not func(p):
# ret.append(p)
# return ret
#
# res=filter_test(sb_show,movie_people)
# print(res) #终极版本
movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']
# def sb_show(n):
# return n.endswith('sb')
#--->lambda n:n.endswith('sb') def filter_test(func,array):
ret=[]
for p in array:
if not func(p):
ret.append(p)
return ret # res=filter_test(lambda n:n.endswith('sb'),movie_people)
# print(res) #filter函数
movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']
# print(list(filter(lambda n:not n.endswith('sb'),movie_people)))
res=filter(lambda n:not n.endswith('sb'),movie_people)
print(list(res)) print(list(filter(lambda n:not n.endswith('sb'),movie_people)))

6.reduce函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
from functools import reduce # num_l=[1,2,3,100]
#
# res=0
# for num in num_l:
# res+=num
#
# print(res) # num_l=[1,2,3,100]
# def reduce_test(array):
# res=0
# for num in array:
# res+=num
# return res
#
# print(reduce_test(num_l)) # num_l=[1,2,3,100]
#
# def multi(x,y):
# return x*y
# lambda x,y:x*y
#
# def reduce_test(func,array):
# res=array.pop(0)
# for num in array:
# res=func(res,num)
# return res
#
# print(reduce_test(lambda x,y:x*y,num_l)) # num_l=[1,2,3,100]
# def reduce_test(func,array,init=None):
# if init is None:
# res=array.pop(0)
# else:
# res=init
# for num in array:
# res=func(res,num)
# return res
#
# print(reduce_test(lambda x,y:x*y,num_l,100)) #reduce函数
# from functools import reduce
# num_l=[1,2,3,100]
# print(reduce(lambda x,y:x+y,num_l,1))
# print(reduce(lambda x,y:x+y,num_l))

7.小结

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
#处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样
# map() #filter遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来 people=[
{'name':'alex','age':1000},
{'name':'wupei','age':10000},
{'name':'yuanhao','age':9000},
{'name':'linhaifeng','age':18},
]
# print(list(filter(lambda p:p['age']<=18,people)))
# print(list(filter(lambda p:p['age']<=18,people))) #reduce:处理一个序列,然后把序列进行合并操作
from functools import reduce
print(reduce(lambda x,y:x+y,range(100),100))
# print(reduce(lambda x,y:x+y,range(1,101)))

8.内置函数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# print(abs(-1))
# print(abs(1))
#
# print(all([1,2,'1']))
# print(all([1,2,'1','']))
# print(all('')) # print(any([0,'']))
# print(any([0,'',1])) # print(bin(3)) #空,None,0的布尔值为False,其余都为True
# print(bool(''))
# print(bool(None))
# print(bool(0)) name='你好'
# print(bytes(name,encoding='utf-8'))
# print(bytes(name,encoding='utf-8').decode('utf-8')) # print(bytes(name,encoding='gbk'))
# print(bytes(name,encoding='gbk').decode('gbk'))
#
# print(bytes(name,encoding='ascii'))#ascii不能编码中文
#
# print(chr(46))
#
# print(dir(dict))
#
# print(divmod(10,3)) # dic={'name':'alex'}
# dic_str=str(dic)
# print(dic_str) #可hash的数据类型即不可变数据类型,不可hash的数据类型即可变数据类型
# print(hash('12sdfdsaf3123123sdfasdfasdfasdfasdfasdfasdfasdfasfasfdasdf'))
# print(hash('12sdfdsaf31231asdfasdfsadfsadfasdfasdf23'))
#
name='alex'
# print(hash(name))
# print(hash(name))
#
#
# print('--->before',hash(name))
# name='sb'
# print('=-=>after',hash(name)) # print(help(all))
#
# print(bin(10))#10进制->2进制
# print(hex(12))#10进制->16进制
# print(oct(12))#10进制->8进制 name='哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈粥少陈'
# print(globals())
# print(__file__)
#
def test():
age=''
# print(globals())
print(locals())
#
# test()
#
l=[1,3,100,-1,2]
# print(max(l))
# print(min(l)) # print(isinstance(1,int))
# print(isinstance('abc',str))
print(isinstance([],list))
# print(isinstance({},dict))
print(isinstance({1,2},set))

day16-python之函数式编程匿名函数的更多相关文章

  1. Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器

    函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  2. Python实用笔记 (14)函数式编程——匿名函数

    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外, ...

  3. python函数式编程——匿名函数(lambda)

    匿名函数lambda lambda x:x*x x就是参数 相当于函数 def f(x): return x*x 匿名函数可以作为函数对象赋值给变量: >>> f = lambda ...

  4. python函数式编程-匿名函数

    >>> map(lambda x: x * x, [, , , , , , , , ]) [, , , , , , , , ] 关键字lambda表示匿名函数,冒号前面的x表示函数参 ...

  5. [Python3] 034 函数式编程 匿名函数

    目录 函数式编程 Functional Programming 1. 简介 2. 函数 3. 匿名函数 3.1 lambda 表达式也称"匿名函数" 3.2 lambda 表达式的 ...

  6. Python进阶之函数式编程(把函数作为参数)

    什么是函数式编程? 什么是函数式编程? 函数:function 函数式:functional,一种编程范式 函数式编程是一种抽象计算的编程模式 函数≠函数式,比如:计算≠计算机 在计算机当中,计算机硬 ...

  7. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  8. 可爱的 Python : Python中函数式编程,第一部分

    英文原文:Charming Python: Functional programming in Python, Part 1 摘要:虽然人们总把Python当作过程化的,面向对象的语言,但是他实际上包 ...

  9. 慕课网python进阶函数式编程学习记录

    函数 不等于 函数式 函数: function 函数式: functional,一种编程范式 就好比计算机 不等于 计算 c语言: 函数 python :函数式(计算) 函数式编程特点: 把计算视为函 ...

随机推荐

  1. 自定义层or网络

    目录 Outline keras.Sequential Layer/Model MyDense MyModel Outline keras.Sequential keras.layers.Layer ...

  2. parse.urljoin

    parse.urljoin(former,later): 用former的域名拼接later的路径,如果later有域名,则进行忽略

  3. 模拟+位运算 HDOJ 5491 The Next

    题目传送门 题意:意思很简单,找一个最接近D且比D大的数,满足它的二进制表示下的1的个数在[S1, S2]之间 分析:从D + 1开始,若个数小于S1,那么从低位向高位把0替换成1直到S1就是最小值, ...

  4. Vue不兼容IE8原因以及Object.defineProperty详解

    Vue不兼容IE8原因以及Object.defineProperty详解 原因概述: Vue.js使用了IE8不能模拟的ECMAScript5特性. Vue.js支持所有兼容ES5的浏览器. Vue将 ...

  5. Mysql的查询语句(联合查询、连接查询、子查询等)

    Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...

  6. P1984 [SDOI2008]烧水问题

    题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...

  7. 分享几个自己喜欢的前端UI框架

    http://www.layui.com/ http://element-cn.eleme.io/#/zh-CN/component/installation

  8. Lambda表达式的一些常用形式

    1.调用一个方法 prod=>EvaluteProduct(prod); 2.lambad表达式来表示一个多参数的委托,则必须把参数封装在括号内.语句如下: (prod,count)=>p ...

  9. client系列、offset系列、scroll系列

    一.client系列 clientWidth/clientHeight    是我们设置的宽和高加上内边距(没有边框) clientLeft/clientTop 就是我们设置的边框值 二.offset ...

  10. IDEA下MyBatis错误总结

    1. Pom.xml配置 语法顺序 <properties resource="config.properties"> </properties> < ...