zoukankan      html  css  js  c++  java
  • 函数进阶

    一、递归函数

    递归函数:就是在函数内部调用自身函数
    
    注意点:一定要设置递归的临界点(终止递归的条件)
    
    获取最大递归深度: res = sys.getrecursionlimit()
    
    设置最大递归深度:sys.setrecursionlimit(400000)
    
    def mut(n):
        if n == 1:
            return 1
        else:
            return mut(n - 1) * n
    

    二、纯函数

    概念:简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数

    3个原则:

    1.变量都只在函数作用内获取,作为函数的参数传入

    2.不会产生副作用,不会改变被传入的数据或者其他数据(全局变量)

    3.相同的输入保证相同的输出

    函数的副作用:调用函数会对当前的环境造成影响(修改当前环境中的数据)

    三、匿名函数

    语法:lambda 参数:返回值表达式
    
    res = (lambda x,y:x+y)(11,22)
    
    匿名函数结合 内置函数:filter一起使用
    
    res = filter(lambda x: len(x) > 4, Names)
    
    匿名函数结合推导式使用
    
    li2 = [(lambda x: x/5)(i) for i in li]
    

    四、python内置函数

    all函数:判读可迭代对象中所有的数据都为真(布尔值为True)
    
    any函数:迭代对象内只要有一个元素为真,返回True
    
    locals函数:获取当前局部的作用域所有的变量,以字典形式进行输入
    
    globals函数:获取当前作用域类的所有全局变量,以字典形式属性
    
    map函数:
    1.将函数应用于iterable中每一项并输出其结果的迭代器
    2.自动将可迭代对象遍历,把遍历出来的数据,当成参数传入map第一个接口的函数中,将函数执行的结果,放到一个迭代器中进行返回
    
    map(lambda x: x * 2, [1, 2, 3, 4, 5])
    
    filter函数:过滤函数
    
    zip函数:聚合打包
    

    五、偏函数

    偏函数:可以用来固定函数中的函数
    
    from functools import partial
    
    res1 = filter(lambda x: x > 5, li1)
    res2 = filter(lambda x: x > 5, li2)
    res3 = filter(lambda x: x > 5, li3)
    
    filter2 = partial(filter,lambda x:x>5)
    
    print(list(filter2(li1)))
    print(list(filter2(li2)))
    print(list(filter2(li3)))
    

      

    俗话说:不积跬步无以至千里! 俗话又说:好记性不如烂笔头!
  • 相关阅读:
    ajax获取数据中文乱码问题最简单的完美解决方案
    修改easyui默认datagrid的表格内字体大小,样式
    setTimeout延迟加载方法的使用
    解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList的问题
    模块和包
    常用模块
    匿名函数及推导式
    python-迭代器和生成器
    python-内置函数
    python-递归
  • 原文地址:https://www.cnblogs.com/micifang/p/14509183.html
Copyright © 2011-2022 走看看