一、作用域

作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变

二、匿名函数

lambda:正常和其他函数进行配合使用。正常无需把匿名函数赋值给一个变量。

f=lambda x:x*x
print(f) #打印指向该函数的内存地址
print(f(5)) #内存地址(5) 调用运行该函数 def cala(x):
y=x*x
return y
z=cala(5)
print(z)
>>>
<function <lambda> at 0x10137d950>
25
100
#name=alex  #修改为:name=alex_sb
f=lambda x:x+'_sb'
print(f('alex'))
f=lambda x,y,z=10:x+y+z  #可以存在默认数值
print(f(3,3))
>>>>
16
f=lambda x,y,z=10:(x+1,y+1,z+1)  #如果需要对函数进行返回多个值,需要加括号
print(f(3,3))
>>>
(4, 4, 11)
#这段代码
def calc(n):
return n**n
print(calc(10)) #换成匿名函数
calc = lambda n:n**n
print(calc(10))

三、函数式编程

先过

四、常见的函数式编程

4.1、map函数:

  通过为了灵活实现多个字符串的多种变化,进行两次函数化的程序设计:

def pf(x):
return x**2 def add_one(x):
return x+1 def reduce_one(x):
return x-1 def num_pin(fanfa,array):
new_num=[]
for i in array:
new_num.append(fanfa(i))
return new_num
new_num=num_pin(pf,num_1)
print(new_num)
new_num2=num_pin(add_one,num_1)
print(new_num2) [1, 4, 100, 25, 9, 49]
[2, 3, 11, 6, 4, 8]
num=[13,46,5,46,5,7]
def pf(x):
return x*x def jisuan(fuan,array):
new_num=[]
for i in array:
new_num.append(fuan(i))
return new_num print(jisuan(pf,num))
f=lambda x:x*x
print(f)
print(lambda x:x*x)
print(jisuan(f,num))
print(jisuan(lambda x:x*x,num))
>>>>
[169, 2116, 25, 2116, 25, 49]
<function <lambda> at 0x101b7da60>
<function <lambda> at 0x101b7dae8>
[169, 2116, 25, 2116, 25, 49]
[169, 2116, 25, 2116, 25, 49]
#终极版本
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))) >>>
[2, 3, 11, 6, 4, 8]
内置函数map,处理结果 <map object at 0x101b862e8>
[2, 3, 11, 6, 4, 8]
传的是有名函数 [0, 1, 9, 4, 2, 6]
['L', 'I', 'N', 'H', 'A', 'I', 'F', 'E', 'N', 'G']

总结:

对可迭代对象的每一个元素进行逻辑运算:可以使用匿名函数:lambda或者自定义函数

①、print(list(map(lambda x:x**2,num)))

②、

num=[13,46,5,46,5,7]
def pf(x):
return x*x
print(list(map(pf,num)))
4.2、filter函数
a=list(filter(lambda x: x.endswith('sb'),movie_people))
print(a)
>>>
['sb_wupeiqisb', 'linghaifensb']
指定筛选列表、字符串、元祖(movie_peopl)中以sb结尾的元素。如果要不以sb结尾的话:x:not x.endswith('sb')
迭代:movie_people里面的元素,for循环依次遍历一次,执行前面的匿名函数,如果是true的话保留元素,生成一个迭代器 。
指向一个内存地址。如果需要打印出来的话,则需要用list现实出来
4.3 reduce

python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r的更多相关文章

  1. day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数

    20180729    补充部分代码 20180727    上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...

  2. 【Python全栈笔记】04 [模块二] 18 Oct lambda表达式, 内置函数

    lambda表达式 lambda表达式是函数的一种简化,如下面两种函数定义方法,实际上效果是一样的. 使用lambda表达式的函数,func2是函数名,lambda: 后面的123 即为返回值. de ...

  3. 【python深入】map/reduce/lambda 内置函数的使用

    python中的内置函数里面,有map和reduce两个方法,这两个方法可以非常好的去做一些事情,但是之前都没有用过,下面是关于这两个方法的介绍: 一.map相关 map()会根据提供的函数对指定的序 ...

  4. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

  5. Python函数式编程——map()、reduce()

    文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...

  6. python学习笔记:(三)list(列表)常用的内置方法

    list(列表)包含一些内置的方法,以下为详细介绍: (方法调用:对象.方法(参数)) 1.append() 在列表的末尾添加新的对象 如: lst=[1,2,3] lst.append(4) --- ...

  7. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  8. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  9. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  10. python 匿名函数,内置函数

    一 :匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使 ...

随机推荐

  1. Google 黑客搜索技巧

    常用的google关键字: foo1 foo2 (也就是关联,比如搜索xx公司 xx美女) operatorfoo filetype123 类型 sitefoo.com 相对直接看网站更有意思,可以得 ...

  2. android 中 webview 怎么用 localStorage?

    我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀? 网上搜了好多都没效果 1 2 3 4 5 6 7 8 9 mainWebView = (WebVie ...

  3. SSM框架学习之高并发秒杀业务--笔记2-- DAO层

    上节中利用Maven创建了项目,并导入了所有的依赖,这节来进行DAO层的设计与开发 第一步,创建数据库和表. 首先分析业务,这个SSM匡济整合案例是做一个商品的秒杀系统,要存储的有:1.待秒杀的商品的 ...

  4. Windows Store App 全球化:引用分离资源文件中的资源

    大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用 ...

  5. PHP基础示例:商品信息管理系统v1.1[转]

      实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...

  6. git中通过实际操作来了解常用命令

    基本的6个命令 常用的就下面6个命令,但是详细的可能有上百个命令. 还需要特别了解git的几个名词,workspace:工作区,Index/Stage:暂存区,Respository:本地仓库,Rem ...

  7. UE3植被工具-支持刷Actor)

    [目标] 植被工具-刷Actor [思路] 1 添加类型FFoliageMeshInfo.AddInstance 的函数 2 添加Instance就直接SpawnActor 3 类结构 4 修改的函数 ...

  8. PHP分页做法

    1.分页封装类 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 priv ...

  9. Rhel6-pacemaker+drbd配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.12 ...

  10. [vijos P1524] 最小监视代价

    历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下: (1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么 ...