美文网首页
Python高级-函数式编程1

Python高级-函数式编程1

作者: Yuanshuo | 来源:发表于2019-07-26 17:46 被阅读0次
The core values of Chinese socialism

Log模块资料

Python语言的高级特性

函数式编程

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

lambda表达式

  • 函数:最大程度复用代码
    • 存在问题:如果函数很小、很短,则会造成啰嗦
  • lambd表达式(匿名函数)
    • 一个表达式,函数体相对简单
    • 不是一个代码块,仅仅是一个表达式
    • 可以有参数,有多个参数也可以,用逗号隔开
# “小”函数举例
def printA():
    print("AAAAAAAA")
    
printA()

AAAAAAAA
# lambda表达式特点
# 1.以lambda开头
# 2.紧跟一定的参数(如果有的话)
# 3.参数后用冒号和表达式主题隔开
# 4.只是一个表达式,所以, 没有return

#计算一个数字的100倍数
stm = lambda x: 100*x
stm2 = lambda a, b, c: c*100+b*10+a
# 使用上跟函数调用一模一样
print(stm(77))
print(stm2(6,7,7))
7700
776

高阶函数

  • 把函数作为参数使用的函数
# 变量可以赋值
a = 100
b = a
# 函数名称就是一个变量
def funA():
    print("In funA")
    
funB = funA
funB()

# 以上代码得出结论:
# 函数名称是变量
# funB 和 funA只是名称不一样而已
# 既然函数名称是变量,则应该可以被当做参数传入另一个函数
In funA
# 高阶函数举例
# funA是普通函数,返回一个传入数字的100倍的数字
def funA(n):
    return n*100

# 再写一个函数,把传入的参数乘以300倍,利用高阶函数
def funB(n):
    return funA(n)*3

print(funB(9))

# 写一个高阶函数
def funC(n,f):
    # 假定函数是把n扩大100倍
    return f(n)*3

print(funC(9, funA))
    
2700
2700

系统高阶函数-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)
# map类型是一个可迭代的结构,所以可以使用for遍历
for i in l3:
    print(i)

# 以下得到的列表生成式为空,why???
l4 = [i for i in l3]
print(l4)


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
0
10
20
30
40
50
60
70
80
90
[]

reduce

  • 原意是归并,缩减
  • 把一个可迭代对象最后归并成一个结果
  • 对于作为参数的函数要求:必须有两个参数,必须有返回结果
  • reduce(1, 2, 3, 4, 5) = f(f(f(f(1, 2), 3), 4), 5)
  • reduce 需要导入functools包
from functools import reduce
# 定义一个操作函数
# 加入操作函数只是相加
def myAdd(x, y):
    return x+y

# 对于列表[1, 2, 3, 4, 5, 6]执行myAdd的reduce操作
rst = reduce(myAdd, [1, 2, 3, 4, 5, 6])
print(rst)
21

相关文章

  • Python入门

    Python3教程 安装Python 第一个Python程序 Python基础 函数 高级特性 函数式编程 模块 ...

  • 廖雪峰python3 教程

    观其大纲 1 python基础 2 函数 3 高级特性 4 函数式编程 5 模块 6 面向对象编程 7 面向对象高...

  • Python函数式编程指南

    注:采转归档,自己学习查询使用 Python函数式编程指南(1):概述Python函数式编程指南(2):函数Pyt...

  • Python高级-函数式编程1

    Log模块资料 日志处理 Python语言的高级特性 函数式编程 基于lambda演算的一种编程方式程序中只有函数...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

  • Python进阶笔记

    文|Seraph 函数式编程 1 纯函数式编程:不需要变量、没有副作用、测试简单2 Python不是纯函数式编程(...

  • Python函数式编程

    在 Python 中使用函数式编程的最佳实践! 简 介 Python 是一种功能丰富的高级编程语言。它有通用的...

  • Python函数式编程

    在 Python 中使用函数式编程的最佳实践! 简 介 Python 是一种功能丰富的高级编程语言。它有通用的标准...

  • 【JavaScript】技术参考资料

    JS基础、高级、进阶 MDN·JavaScript 函数式编程 阮一峰老师的入门简介: 函数式编程初探、函数式编程...

  • Python高级特性之函数式编程

    Python的高级特性 函数式编程 基于lambda演算的一种编程方式程序中只有函数函数可以作为参数,也可以作为返...

网友评论

      本文标题:Python高级-函数式编程1

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