• Python笔记(二)


    python笔记

    函数式编程

    函数

    • 函数是Python内建支持一种封装(将大段代码拆成函数)
    • 通过函数的调用,可以将复制的任务分解。

    函数式编程(Functional Programming)

    计算机(Computer)和计算(Compute)

    抽象程度 程序语言 距离硬件
    越高 越高级 越远
    越低 越低级 越近

    函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程编写的函数是没有变量的。
    是否允许使用变量的编程

    没有变量 使用变量
    没有变量状态 内部变量状态不确定
    没副作用 有副作用

    特点:
    允许把函数本身作为参数传入另一个函数,还允许返回一个函数

    高阶函数(Higher-order function)

    变量可以指向函数

    例:

    >>> abs(-10)
    10
    >>> abs #只写abs
    <built-in function abs>
    >>> x = abs(-10) #将函数调用的结果赋值给变量
    >>> x
    10
    >>> f = abs 
    >>> f
    <built-in function abs>
    >>> f = abs
    >>> f(-10)
    10  #成功,变量f已经指向abs函数本身
    

    结论:
    函数本身也可以赋值给变量,即:变量可以指向函数

    函数名也是变量

    函数名其实就是指向函数的变量
    例:

    >>> abs = 10
    >>> abs(-10)    #将abs指向其他对象
    Traceback (most recent call last):
        File "<stdin>", line 1, in <moudule>
    TpyeError: 'int' object is not callable
    # 把abs指向10后无法调用该函数,因为abs指向了整数10
    # 恢复abs函数,请重启Python交互环境
    # 为什么重启就恢复,因为abs函数实际是定义在__bulitin__模块中,要使abs变量指向在其他模块生效,要用__builtin__.abs = 10
    

    传入函数

    高阶函数:一个可以接收另一个函数作为参数的函数
    简单的高阶函数

    def add(x, y, f):
        return f(x) + f(y)
    

    结论:
    把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式

    map()和reduce()函数

    map()函数

    • map()函数:两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
    • map()作为高阶函数,把运算规则抽象化。

    map()实践:

    >>> def f(x)
    ...     return x * x
    ...     
    >>> r = map(f, [1, 2, 3, 4, 5, 6])
    >>> list(r) #将map传入的函数依次作用到序列
    [1, 4, 9, 16, 25, 36]
    

    reduce()函数

    • reduce()函数:把结果继续和序列的下一个元素做累积计算。

    reduce()实践:

    >>> from functools import reduce
    >>> def add(x, y):
    ...     return x + y
    ...
    >>> reduce(add, [1, 3, 5, 7]) #add(add(add(1, 3), 5), 7)
    16
    

    练习
    利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
    输入:['adma', 'LISA', 'barT']
    输出:['Adam', 'Lisa', 'Bart']

    de
    
  • 相关阅读:
    SAP ABAP Netweaver服务器的标准登录方式讲解
    php导出百万数据到csv
    消息中间件Kafaka
    kafka安装
    Linux系统下安装jdk及环境配置(两种方法)
    PHP导出3w条数据成表格
    excel 导出导入
    利用Redis锁解决高并发问题
    BeyondCompare4破解方法
    Linux(Ubuntu)通过nfs挂载远程硬盘
  • 原文地址:https://www.cnblogs.com/isChenJY/p/7687148.html
Copyright © 2020-2023  润新知