zoukankan      html  css  js  c++  java
  • 14 python初学(高阶函数 递归函数 内置函数)

    高阶函数:1.  函数名是一个变量,函数名可以进行赋值

      2. 函数名可以作为函数参数,还可以作为函数返回值(函数名称作为函数返回值时返回的是:函数的地址;print 这个返回值的调用相当于执行这个函数。 函数调用作为函数返回值相当于返回这个函数的执行结果)

     

    def f(n):
        return n*n
    def foo(a, b, func):
        return func(a)+func(b)
    
    print(foo(1, 2, f))
    
    # >>> 5

    递归函数:

    1. 调用自身函数
    2. 设置结束条件
    3. 每次进入更深一层递归时,问题规模相比上一层都有所减少
    4. 但凡是递归可以写的函数,循环都可以解决
    5. 递归的效率在很多时候非常低,递归层次过多会导致栈溢出

    经典案例:斐波那切数列

    # 0 1 1 2 3 5 8 13 21
    # febo(1) = 0    febo(2) = 1  febo(3) = 1
    # febo(n) = feb(n-1) + feb (n-2)
    def febo(n):
        if n == 1:
            return 0
        if n == 2:
            return 1
        return febo(n-1)+febo(n-2)
    
    print(febo(4))


    内置函数:

           参考如下博客:https://www.cnblogs.com/y-m-f/p/7764798.html

     重要内置函数:

    1. ret = filterfuncstr):实现一个过滤器的功能,python3返回一个迭代器对象,python2返回一个元组。

                    可以通过list()将迭代器对象转为列表。listret

        2. ret = mapfuncstr):将序列每一个对象做一个处理

        3. reducefunc, range(1, 101)):

             如果想要在python3使用,需要引入:from functools import reduce

            4. lambda:匿名函数。匿名函数命名规则,用lambda关键字标识,冒号(:)左侧标识函数接收的参数(a,b),冒号(:)右侧表示函数的返回值(a+b)。

        因为 lambda 在创建时不需要命名,所以,叫匿名函数

           如:  lambda a,b : a + b

    from functools import reduce
    
    print(reduce(lambda x, y: x * y , range(1, 6)))

     

     

  • 相关阅读:
    Ignatius and the Princess IV
    JavaFX+SpringBoot+验证码功能的小型薪酬管理系统
    JFX11+Maven+IDEA 发布跨平台应用的完美解决方案
    一个开源的跨平台音乐播放与音乐下载器
    JavaFX获取屏幕尺寸
    OkHttp:NoClassDefFoundError
    jasypt-spring-boot提示Failed to bind properties
    JFX11+IDEA跨平台打包发布的完美解决办法
    IDEA通过Maven打包JavaFX工程(OpenJFX11)
    IDEA 配置文件位置
  • 原文地址:https://www.cnblogs.com/mlllily/p/10257691.html
Copyright © 2011-2022 走看看