• 函数式编程


    函数式编程
    偏函数
    偏函数的概念是将函数式编程的概念和默认参数以及可变参数结合在一起
    一个带有多个参数的函数,如果其中某些参数是固定的,那么就可以通过偏函数为这些参数赋上默认值
    >>> from operator import add
    >>> from functools import partial
    >>> add10 =partial(add,10)
    >>> print add10(25)
    35


    递归函数
    如果函数中包含了对其自身的调用,该函数就是递归的
    在操作系统中,查看某一目录内的所有文件、修改权限等都是递归应用
    >>> def func(num):
    ...     if num==1:
    ...          return 1
    ...     else:
    ...          return num*func(num-1)
    ...
    >>> print func(5)
    120
    >>> print func(10)
    3628800

    内部函数
    闭包
    闭包将内部函数自己的代码和作用域以及外部函数的作用结合起来
    闭包的词法变量不属于全局名字空间域或者局部的——而属于其他的名字空间,带着“流浪”的作用域
    闭包对于安装计算,隐藏状态,以及在函数对象和作用域中随意的切换是很有用的
    闭包也是函数,但是他们能携带一些额外的作用域
    闭包实例
    在电子商务平台下,每件商品的都有一个计数器说明该商品售出数量,这个计数器就可以通过闭包实现
    >>> def counter(start_at=0):
    ...  count=[start_at]
    ...  def incr():
    ...     count[0]+=1
    ...     return count[0]
    ...  return incr
    ...
    >>> a=counter()
    >>> print a()
    1
    >>> b=counter(10)
    >>> print b()
    11
    >>> print a()
    2
    >>> print a()
    3

    装饰器
    装饰器是在函数调用之上的修饰
    这些修饰仅当声明一个函数或者方法的时候,才会应用的额外调用
    使用修饰器的情形有:
    ——引入日志
    ——增加计时逻辑来检查性能
    ——给函数加入事物的能力

    生成器
    定义生成器
    从句法上讲,生成器是一个带yield语句的函数
    一个函数或一个子程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果
    yield语句返回一个值给调用者并暂停执行
    当生成器的next()方法被调用的时候,它会准确地从离开的地方继续

    与迭代器相似,生成器以另外的方式来运作
    当达到一个真正的返回或者函数结束没有更多的值返回,StopInteration异常会被抛出

    >>> def simpGen():
    ...     yield '1'
    ...     yield '2->punch'
    ...
    >>> mygen = simpGen()
    >>> mygen.next()
    '1'
    >>> mygen.next()
    '2->punch'
    >>> mygen.next()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    生成器特性
    用户可以通过send()将值送给生成器,还可以在生成器中抛出异常,以及要求生成器退出

    >>> def counter(num):
    ...   for i in range(num):
    ...      val=yield i
    ...
    >>> c = counter(10)
    >>> c.next()
    0
    >>> c.close()
    >>> c.next()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    >>>


  • 相关阅读:
    Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
    paip.提升性能----java 无锁结构(CAS, Atomic, Threadlocal, volatile, 函数式编码, 不变对象)
    paip. 定时 关机 休眠 的总结
    Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
    paip.java 注解的详细使用代码
    paip.不同目录结构哈的文件批量比较
    paip.cache 缓存架构以及性能提升总结
    paip.消除 Java 的冗长try/catch/finally
    paip 自定义输入法多多输入法词库的备份导出以及导入
    paip.java c++得到当前类,方法名称以及行号
  • 原文地址:https://www.cnblogs.com/ghming/p/8432735.html
Copyright © 2020-2023  润新知