Python系统学习第十九课

log模块资料

python语言的高级特性

函数式编程

  • 基于lambda演算的一种编程方式
    • 程序中只有函数
    • 函数可以作为参数,同样可以作为返回值
    • 春函数式编程语言:LiSP,Haskell
    • 纯函数式编程知识借鉴函数式编程的一些特点,可以理解成一半函数一半python
    • 需要讲述
      • 高阶函数
      • 返回函数
      • 匿名函数
      • 装饰器
      • 偏函数

###lambda表达式

  • 函数:最大程度的复用代码

    • 存在问题:如果函数很小,很短,反而造成麻烦
  • lambda表达式(匿名函数):

    • 一个表达式,函数体相对简单
    • 不是一个代码块,仅仅是一个表达式
    • 可以有参数,有多个参数也可以,用逗号隔开
#小函数的例子,反而显得麻烦
def printA():
    print("aaa")
printA()
aaa
#lambda 表达式的用法
#1,以lambda开头,
#2,紧跟一定参数
#3,参数后用冒号和表达式主体隔开
#4,只是一个表达式,所以,没有return


#计算一个数字的100倍
stm = lambda x:100*x
print(stm(3))
    

300
stm2 = lambda x,y,z:x+y+z
stm2(1,2,3)
6

高阶函数

  • 把函数作为参数使用的函数,叫高阶函数
#函数名称就是一个变量
def fun():
    print("aa")
fun

<function __main__.fun()>
#函数名称就是一个变量
def fun():
    print("aa")
fun1 = fun
fun1
#结论:1,函数名称是变量;2,fun1和fun只是名称不一样而已
#3,既然函数名称是变量,则应该可以被当做参数传入另一个函数
<function __main__.fun()>
# 高阶函数举例
#funA是普通函数,返回一个传入数字的100倍数字
def funA( n ):
    return n*100
def funB(n):
    return funA(n)*2
print(funB(2))

def funC(n, f):
    return f(n)* 2
print(funC(2,funA))

#比较funC和funB,显然funC比funB要好
400
400

系统高阶函数- map

  • 原意就是映射,就是把集合或者列表的元素,每一个元素都按照一定的规则进行操作,生成一个新的列表或者集合
  • map函数就是系统提供的具有映射功能的函数,返回值是一个迭代对象
#map举例
#有一个列表,想对列表里的每一个元素乘以10,并得到新的列表
l1 = [i for i in range(10)]
print(l1)
l2 = []
for i in l1:
    l2.append(i*10)
print(l2)

#第二种方法,利用map函数实现
def mulTen(n):
    return n*10

l3 = map(mulTen, l1)
print(type(l3))
print(l3)
# map类型是一个可迭代的结构,所以可以使用for遍历
for i in l3:
    print(i)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
<class 'map'>
<map object at 0x000002B06D0A01D0>
0
10
20
30
40
50
60
70
80
90

reduce

  • 原意是归并,缩减
  • 把一个可迭代对象最后归并为一个结果
  • 对于函数参数要求:
    • 必须有两个参数,必须返回结果
  • reduce([1,2,3,4,5,6]) == f(f(f(f(f(f(1,2),3)4),5),6)
  • reduce需要导入functools包
from functools import reduce
#定义一个操作函数
#加入操作函数只是相加
def add(x,y):
    return x+y
#对于列表【1,2,3,4,5,6】执行add的reduce操作
a = reduce(add, [1,2,3,4,5,6])     #将前两个参数相加,然后和第三个相加,一直类推,可以得到
print(a)
21

猜你喜欢

转载自blog.csdn.net/qq_42633819/article/details/85692774
今日推荐