美文网首页
Python之函数三

Python之函数三

作者: 止于枯骨1 | 来源:发表于2020-09-10 16:39 被阅读0次

1.高阶函数

1.1高阶函数简介和特点

  • 接受函数作为参数,或者将函数作为返回值的函数就是高阶函数(当我们使用一个函数作为参数的时候,实际上是将指定的代码传递到了目标函数)
  • 高阶函数有2个特点,符合任意一个特点,这个函数就是高阶函数
    1.接受一个或多个函数作为参数
    2.将函数作为返回值返回
# 可以指定一个列表中的所有的偶数,保存到一个新的列表
lst = [1,2,3,4,5,6,7,8,9,10]
def fn1(i):
    if i % 2== 0:
        return True
    return False

def fn(func,l):
    new_lst=[]
    for n in l:
      # 判断n的奇偶
        if funca(n):
            new_lst.append(n)
    return new_lst
print(fn(fn1,lst)) 
输出结果:
[2, 4, 6, 8, 10]

1.2匿名函数

  • 匿名函数 lambda表达式
  • lambda函数表达式是专门用来创建一些简单的函数,它也是函数的另一种创建方式
  • 语法:
    labdma 参数列表 : 返回值
    注意:
    匿名函数最大好处是:它只会用一次,用完就会从内存消失
# filter() 就是一个高阶函数 它需要将别的函数作为参数来传递
# 可以将我们的可迭代对象进行一个过滤
# 返回值    可迭代的对象
lst = [1,2,3,4,5,6,7,8,9,10]
def fn4(i):
    if i % 3 == 0:
        return True
    return False
# filter(fn4,lst) 等价于 filter(lambda i : i % 3 == 0,lst)
print(filter(fn4,lst))
r = filter(lambda i : i % 3 != 0,lst)
print(r)
print(list(r))
输出结果:
<filter object at 0x7fe245a15430>
<filter object at 0x7fe2459a0370>
[3, 6, 9]
********************************************
# 将匿名函数赋值个一个变量
fn6 = (lambda a,b : a + b)(10,50)
print(fn6)
fn8=(lambda i : i % 3 == 0)(4)
print(fn8)
输出结果:
60
False

2.闭包

  • 将函数作为返回值也是高阶函数我们也称为闭包
  • 闭包的好处
    1.通过闭包可以创建一些只有当前函数能访问的变量
    2.可以将一些私有数据藏到闭包中
  • 形成闭包的条件
    1.函数嵌套
    2.将内部函数作为返回值返回
    3.内部函数必须要使用到外部函数的变量
def make_average():
    nums = []
    def fn1(n):
        nums.append(n)
        return sum(nums)/len(nums)
    return fn1
mff= make_average()
print(mff(10))
print(mff(20))
输出结果:
10.0
15.0

3.装饰器的引入

  • 我们可以直接通过修改函数中的代码来完成需求,但是会产生以下一些问题
    1.如果修改的函数多,修改起来会比较麻烦
    2.不方便后期的维护
    3.这样做会违反开闭原则.(OCP原则)
         程序的设计,要求开发过程的扩展,要关闭对程序的修改
#我希望扩展add函数的,但是要求不能修改原函数的情况下对它进行扩展
def add(a,b):
     r = a + b
    return r
def new_add():
    print('函数开始执行')
    r= add(1,2)
    print('函数执行结束')
    return r
s = new_add()
print(s)
输出结果:
函数开始执行
函数执行结束
3

4.装饰器的使用

  • 通过装饰器,可以在不修改原来函数的情况下对函数进行扩展
  • 在开发中,我们都是通过装饰器来扩展函数的功能的
#定义一个函数,就是对其他函数进行扩展,扩展功能:一个是打印函数开始执行;一个打印函数执行结束

def stard_add(old):
    def neww_function(*args,**kwargs):
        print('函数开始执行')
        r= old(*args,**kwargs)
        print('函数执行结束')
        return  r
    return  neww_function

#像类似于stard_add(old)这种函数我们就称之为装饰器
@stard_add  
def spe():
    print('方法')
spe()

@stard_add  
def add(a,b):
    print( a+b)
add(2,4)
输出结果:
函数开始执行
方法
函数执行结束

函数开始执行
6
函数执行结束

相关文章

  • Python精简学习(九)

    Python精简学习之函数之匿名函数-匿名函数

  • 7、函数

    1、Python之什么是函数 2、Python之调用函数 Python内置了很多有用的函数,我们可以直接调用。 要...

  • Python精简学习(八)

    Python精简学习之函数引用-函数引用

  • Python之函数三

    1.高阶函数 1.1高阶函数简介和特点 接受函数作为参数,或者将函数作为返回值的函数就是高阶函数(当我们使用一个函...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • Python第五堂笔记--函数

    1️⃣、Python之什么是函数 函数就是最基本的一种代码抽象的方式。 2️⃣、Python之调用函数 要调用一个...

  • Python学习之模块

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之面向对象高级编程

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之正则

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

  • Python学习之常用模块

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

网友评论

      本文标题:Python之函数三

      本文链接:https://www.haomeiwen.com/subject/slxjektx.html