Python3快速入门—9.函数式编程

本文介绍了Python3的函数式编程,包括闭包、lambda表达式、高阶函数(map、reduce、filter)和装饰器的概念及应用。通过示例详细讲解了闭包的原理,如何使用lambda表达式和三元表达式简化代码,以及如何利用高阶函数对数据进行操作。最后,探讨了装饰器的使用方法,展示了如何在不修改原有函数的基础上增加功能。
摘要由CSDN通过智能技术生成

9.函数式编程

9.1闭包

9.1.1函数也是对象

在Python3中,没有函数重载。即当函数名相同,参数列表不同时,后面定义的函数会覆盖前面定义的函数。

#程序9-1

def add(x,y):

    return x+y

 

def add(x,y,z):

    return x+y+z

 

print(add(1,2))

print(add(1,2,3))

运行结果:

Traceback (most recent call last):

  File ".\run.py", line 10, in <module>

    print(add(1,2))

TypeError: add() missing 1 required positional argument: 'z'

在Python3中,一切皆对象。即函数、类都是对象。

#程序9-2

def add(x,y):

    return x+y

 

f = add

print(f(1,2))

 

class Student():

    def print_info(self):

        print('student')

 

Cls = Student

stu1 = Cls()

stu1.print_info()

运行结果:

3

student

9.1.2函数作为参数

在Python3中,函数也是对象,那么函数也可以作为其他函数的参数或返回值。

#程序9-3:函数作为参数

def square(x):

    return x*x

 

l = [1,2,3,4,5]

 

def fun(l,f):

    n = 0

    for m in l:

        l[n] = f(m)

        n += 1

 

fun(l,square)

print(l)

运行结果:

[1, 4, 9, 16, 25]

#程序9-4:函数作为返回值

def fun():

    def add(x,y):

        return x+y

    return add

 

f1 = fun()

print(f1)

print(f1(1,2))

f2 = fun()

print(f2)

print(f2(7,2))

运行结果:

<function fun.<locals>.add at 0x03490A08>

3

<function fun.<locals>.add at 0x035596A8>

9

函数fun称为封闭函数;函数add称为嵌套函数。当每执行一次封闭函数,都会创建一个嵌套函数的新实例。

9.1.3嵌套函数

嵌套函数的作用:函数封装;闭包。

#程序9-5:封装

def fun():

    def add(x,y):

        return x+y

    return add

 

def add(x,y,z):

    return x+y+z

 

f = fun()

print(f(1,2))

print(add(1,2,3))

运行结果:

3

6

由于嵌套函数被封闭函数保护起来,并不在全局作用域中,因此可以重新定义一个和嵌套函数同名的函数。

嵌套函数本质上属于封闭函数的局部对象,因此并不能在外部直接访问。

9.1.4闭包

在讲闭包之前,先看下面的代码。

#程序9-6

m = 1

def add(a):

    m = m + a

    return m

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值