美文网首页
Python学习:函数式编程

Python学习:函数式编程

作者: _kk_ | 来源:发表于2017-05-17 15:19 被阅读6次

高阶函数:

变量可以指向函数,函数的名字就是变量,函数可以作为其他函数的参数;
map,reduce,filter和swift一样,写法稍有差别。

map:
def f(x):
    return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
需要注意的是:此处的r并非list,而是一个Iterator惰性序列,要转为list,需要

li = list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce:
from functools import reduce
def add(x, y):
     return x + y
reduce(add, [1, 3, 5, 7, 9])
25
filter:
def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
sorted:
sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)

其中key是可以自定义的排序函数
比如,我们需要按照名字中第二个字母排序

M = sorted(['bob', 'about', 'Zoo', 'Credit'], key=itemgetter(1))
['about', 'bob', 'Zoo', 'Credit']

函数作为返回值:闭包

def customer_sum(*args):
    def summ():
        pre = 0
        for item in args:
            pre = pre + item
        return pre
    return summ

cu_sum = customer_sum(1,10,15)

print(cu_sum())
26

函数内部定义函数,并引用了自身局部变量,我们正定义的这个函数为闭包,被引用的变量为闭合变量

返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
因为所有通过同一个函数创建的闭包中引用的局部变量是共享的,切闭包不会是返回立即执行。

匿名函数:

lambda表示匿名函数

a = lambda x,y: x * x + y * y
print(a(2,5))

装饰器:

在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。原理就是高阶函数,把原来的函数包装在一个高级函数,返回。只不过需要把被包装的函数名传到外层函数@functools.wraps(func)

def log(text = 'excuate'):
    def decorator(func):
        @functools.wraps(func)
        def wap(*args,**kw):
            print(text)
            print('%s' % func.__name__)
            return func(*args,**kw)
        return wap
    return decorator

@log('装饰器')
def pStr():
    print('hahahahhhahah')
pStr()

@log()
def pName():
    print("KK")
pName()

装饰器
pStr
hahahahhhahah

excuate
pName
KK

偏函数:

偏函数解决的问题
在不改变原有函数的基础上把某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
列如:

利用一个   int('10000',base=2)   定义一个不需要传base的二进制字符串转十进制的函数;

int2 = functools.partial(int, base=2)
int2('1000000')
64

相关文章

  • Python函数式编程指南

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

  • Python进阶语法——函数式编程、模块,面向对象

    一、 Python进阶学习 一、函数式编程 1.1函数式编程 1.2高阶函数 1.2.1 import mathd...

  • Python高阶函数

    本篇将介绍Python的函数式编程,介绍高阶函数的原理,更多内容请参考:Python学习指南 函数式编程 函数是P...

  • 高阶python 函数式编程

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

  • Python函数式编程

    虽然 Python 不是函数式编程语言(是命令式编程语言),但是支持许多有价值的函数式编程工具。Python 提供...

  • Python进阶笔记

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

  • python函数式编程

    函数式编程指引 — Python 3.7.3 文档

  • Python 中的函数式编程 - PyTips 0x02

    项目地址:https://git.io/pytips Python 中的函数式编程 函数式编程(英语:functi...

  • python必知必会7

    Python 支持函数式编程吗? 近些年来,由于函数式编程易于调试和测试的优点,函数式编程越来越受到关注。虽然 P...

  • 向量化

    python向量化本身做得不是很好需要借助函数式编程或者列表推导式实现 1 列表推导式 2 函数式编程

网友评论

      本文标题:Python学习:函数式编程

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