[Python]学习基础篇:函数的进阶篇

对于函数大家都熟知不过了,但是对于一些函数还是费力的理解,下来我们来看看Python自带的一些函数,在此之前,还是请大家了解什么是高阶函数。 
高阶函数:函数中的高阶函数

  • map()函数 
    格式:map(func,seq) 
    返回值:list 
    map函数的作用是将参数函数func作用于seq中的每一个元素,每个元素产生的结果存放进list中。 
    例如:我们以函数func=x+x*x为例,作用于序列[1,2,3,4,5,6,7,8]上
!/bin/python
def func(x):
    return x+x*x
list=map(func,[1,2,3,4,5,6,7,8])
print(list)
运行结果:[2,6,11,20,30,42,58,72]
  • filter()函数 
    格式:filter(func,seq) 
    filter函数的作用和map函数的作用一样,将函数作用于序列的每一个元素上,但是不同的是filter会根据返回值True/false来决定保留还是丢弃,所以被称之为过滤函数 
    例如:我们有一个函数查找字符串中为小写字母的元素
!/bin/python
def func(x):
    return x.islower()
str='jiJUHDEjideqHEUH'list=filter(func,list(str))
print(list)
运行结果:j['i','j','i','d','e','q']
  • reduce()函数 
    格式:reduce(func,seq) 
    返回值:func的累积结果 
    reduce函数不同于map和filter函数,它是将函数作用于整个seq上,并将结果和序列的下一个元素座累积计算。 
    例如:序列求和,在python中看可以使用sum函数实现,但是也可以使用reduce函数实现
!/bin/python
def sum(x,y):
    return x+y
count=reduce(sum,[1,2,3,4,5,6,7,8,9,10])
print(count)
运行结果:

对于以上的例子都是对于单个函数的简单运用,下来我们组合的使用以上函数。 
例如:求一个序列中的水仙花数,并将水仙花数相加

!/bin/pythondef is_bai(x):
    return x>100def is_flower(x):
    a=int(x/100)
    b=int((x-a*100)/10)
    c=x-a*100-b*10
    return a*a*a+b*b*b+c*c*cdef func1(x,y):
    return x+y
list=[12,123,153,170,372,371]
sum=reduce(func1,map(is_flower,filter(is_bai,list)))

  • 匿名函数 
    匿名函数是指不适用def关键字定义一个函数,而是使用lambda创建一个函数。 
    格式:lambda 参数:返回值 
    对于匿名函数,它的主体不是一个代码块,而是一个表达式,下来我们用一个例子来理解一下lambda的格式。 
    如:我们求两个是的和 
    一般情况我们是这样来编码的:
!/bin/python
def sum(x,y):
    return x+y
sum(1,3)
结果为:4

我们使用匿名函数来完成:

!/bin/python
c=lanbda x,y:x+y
print(c)
结果为:4

格式中的冒号(:)是分隔符 
匿名函数的调用: 
变量=lanbda 参数:返回值

注意:Python对匿名函数的支持有限,只有一些简单的情况下可以使用匿名函数。


  • 偏函数 
    偏函数是由Python模块中的functools模块提供的一个函数,这样可以是代码更加简洁 
    格式:partial(funct,funct_argx1,funct_argx2……) 
    偏函数是将所有承载的函数作为partial()函数的一个参数,原函数的各个参数一次作为partial()函数的后续参数,除非使用关键字参数。 
    作用:把一个函数的某些参数固定住(设置默认参数),返回一个新函数。 
    下来我们来举个例子理解一下这个格式。 
    如:我们求不同数对于3的取余
!/bin/python
def mod(m,n)    
             return m%n
func_new=partial(mod,3)
print('调用自定义函数,100对3取余',mod(100,3))
print('调用偏函数,100对3取余',func_new(3))
运行结果为:
调用自定义函数,100对3取余1
调用偏函数,100对3取余1

对于偏函数可以设定默认值降级函数调用的难度,同时当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

原文地址:http://blog.51cto.com/lnsane784/2058248

时间: 2024-11-09 15:41:03

[Python]学习基础篇:函数的进阶篇的相关文章

python学习第十六天 --继承进阶篇

这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展.但是有时候会发现,子类需要继承一个类的方法,又要继承另一个类的方法,才能完成要实现的功能.怎么办?python给我们提供了多继承的概念.类似于C++语言,俗称类的多继承. 看个例子: >>> class Animal(object): def __init__(self,name): se

python 学习笔记十一 SQLALchemy ORM(进阶篇)

SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如: MySQL-Python mysql+mysqldb://<user>:<password>@<host>[:<port&g

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

Python之路,Day15 - Django适当进阶篇

Python之路,Day15 - Django适当进阶篇 本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣和效率最高的,今天就来基于下面的需求来继续学习Django 项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存6

Python学习(一):入门篇:python中的一些数据结构

Python里的一些基本知识点总结 Last Edit 2014/5/2 这里记录的是Python2.7版本的语法特征,部分与Python3.0是不一样的. 一,关于开发环境 在windows下可以直接在官网下载相关的版本,然后默认安装.使用直带的IDLE编辑器. IDLE中两个有用的快捷键: ALT+P:重复历史命令(从最近到最老) ALT+N:   重复历史命令(从最老到最近) IDLE中没有清屏功能. 在cmd中进行: 1,首先要在环境变量的path中添加相关的路径: C:\Python2

Python学习(三):入门篇:Python中怎么编写类

Python中怎么编写类 Last Edit 2013/5/2 先看一个例子: #person.py class person: """class to representaion a person""" def __init__(self,name,age): self.name=name if 0<age<=150: self.age=age else: print 'age is no valid!' def display(s

零基础Python学习路线,小白的进阶之路!

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图.对于一个零基础的想学习python的朋友来说,学习方法很重要, 学习方法不对努力白费 一定要有一个正确的学习线路与方法零基础Python学习路线,小白的进阶之路!零基础Python学习路线,小白的进阶之路!必学知识:[Linux基础][Python基础语法][Python字符串][文件操作

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

OpenCV for Python 学习 (一 绘图函数)

本人的学习笔记主要记录的是学习opencv-python-tutorials这本书中的笔记 今天晚上简单学习OpenCV for Python如何绘图,主要用了这几个函数(这几个函数可在:http://docs.opencv.org/modules/core/doc/drawing_functions.html 找到): cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) cv2.circle(img, center,