zoukankan      html  css  js  c++  java
  • 初识python:高阶函数(附-高阶函数)

    定义:

      变量可以指向函数,函数的参数能接收变量,那么,一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。

      简单说就是:把函数当作参数传递的函数就是高阶函数

    特性
      1、把一个函数名当作实参传递给另一个函数,在不修改被装饰函数源代码的情况下为其添加功能
      2、返回值中包含函数名,不改变函数调用方式

    实例1:

    # abs 内置取绝对值函数
    def add(a,b,f):
        return f(a) + f(b) #a的绝对值+b的绝对值
    print(add(1,-2,abs)) # 取3,-6的绝对值之和

    返回值:3

    实例2,在不修改被装饰函数源代码的情况下为其添加功能:

    #在不修改被装饰函数源代码的情况下为其添加功能
    import time
    def bar():
        time.sleep(2)
        print('第一个函数')
    
    def test1(func):
        start_time=time.time() #开始时间
        func() #调用bar函数
        stop_time=time.time() #结束时间
        print('函数运行时间:',stop_time-start_time)
    test1(bar)

    实例3,不改变函数调用方式:

    # 不改变函数调用方式
    import time
    def bar():
        time.sleep(2)
        print('第一个函数')
    def test2(func):
        print(func)
        return func
    #test2(bar) #传递变量内存地址
    #test2(bar()) #传递变量值,不符合高阶函数规范
    bar=test2(bar)
    bar()

    嵌套函数:

      定义: 在一个函数中,再定义了另一个函数,就叫嵌套函数

    实例:

    # 嵌套函数
    def foo():
        print('嵌套函数1')
        def bar():
            print('嵌套函数2')
        bar()
    foo()
    世风之狡诈多端,到底忠厚人颠扑不破; 末俗以繁华相尚,终觉冷淡处趣味弥长。
  • 相关阅读:
    leetcode 78. 子集 JAVA
    leetcode 91. 解码方法 JAVA
    leetcode 75. 颜色分类 JAVA
    leetcode 74 搜索二维矩阵 java
    leetcode 84. 柱状图中最大的矩形 JAVA
    last occurance
    first occurance
    classical binary search
    LC.234.Palindrome Linked List
    LC.142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/simple-li/p/9741120.html
Copyright © 2011-2022 走看看