zoukankan      html  css  js  c++  java
  • 5.2Python函数(二)

    目录

    前言

    这一篇式相继上一篇5.1Python函数(一)的进阶文章。

    一个重要的思想是:我们把”函数名“当成一个变量来处理。

    (一)偏函数

    1.说明

    偏函数:在不修改原函数的原函数前提下,修改函数的默认值,新建的函数叫偏函数。

    2.原代码

    # 定义一个有默认值的函数
    def test1(a, b, c, d=1):
        print(a+b+c+d)
    
    
    # 现在有一个需求,想把默认值改为c=2,d=3
    # 我们需要在重新构造一个全新的函数?
    # 不需要,下面的定义类似类的继承,也就是偏函数的定义
    def test2(a, b, c=2, d=3):
        test1(a, b, c, d)
    
    # 调用偏函数
    test2(1, 2)
    

    3.显示效果

    01.png

    (二)高阶函数

    1.说明

    函数名也是一个变量,也可以通过赋值,传递给其他变量。

    当函数的形参接收的是一个函数名的时候,则称该函数是高阶函数

    2.源代码

    # 动态的计算两个数
    def caculate(num1, num2, caculatefun):
        result = caculatefun(num1, num2)
        print(result)
    
    
    # 求差函数
    def mysum(a, b):
        result = a + b
        print("求和函数")
        return result
    
    
    # 求和和函数
    def mysub(a, b):
        result = a - b
        print("求差函数")
        return result
    
    
    # 调用高级函数
    caculate(4, 2, mysum)
    caculate(4, 2, mysub)
    

    3.运行效果

    02.png

    (三)返回值函数

    1.说明

    当函数的返回值是:一个函数名称时,我们称返回值函数

    2.源代码

    # 定义一个返回值函数
    def get_fun(symbol):
        # 子函数求和
        def my_sum(a, b):
            return a+b
    
        # 子函数求差
        def my_sub(a, b):
            return a-b
    
        # 根据判断返回不同的函数名
        if symbol == "+":
            return my_sum
        elif symbol == "-":
            return my_sub
    
    
    # 调用返回函数
    func = get_fun("+")
    result = func(1, 2)
    print(result)
    

    3.运行效果

    03.png

    (四)匿名函数

    1.说明

    没有名字的函数,我们称匿名函数,也称lambda函数。

    语法:lambda var1, var2,……:表达式

    注意:只能写一个表达式,而且只能用一次。

    2.源代码

    # 定义一个匿名函数
    func = lambda x, y: x + y
    result = func(1, 2)
    print("结果是:", result)
    

    3.运行效果

    04.png

    (五)闭包函数

    1.说明

    首先清楚两个概念:

    外部函数:在外出定义的函数。

    内部函数:嵌套在一个函数里面的和函数。

    闭包函数的定义:(满足三个条件)

    1. 必须有函数嵌套
    2. 内部函数引用到外部的变量
    3. 返回值是内部函数名

    注:内部函数需要修改外部变量,需要用nolocal 声明

    2.源代码

    # 定义一个闭包函数
    def test(a):
        b = 2
        def test2():
            nonlocal b
            b = 5
            print("a:", a)
            print("b:", b)
        return test2
    
    # 调用闭包函数
    fun = test(1)
    fun()
    

    3.运行效果

    06.png

    作者:Mark

    日期:2019/02/04 周一

  • 相关阅读:
    集合、序列、字典
    测验2: Python基础语法(上) (第4周)
    geckodriver问题
    转:Loadrunner添加服务器监控
    转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法
    星号三角形
    天天向上的力量 III
    平方值格式化
    同符号数学运算
    JMeter 连接MySQL
  • 原文地址:https://www.cnblogs.com/zyg123/p/10351717.html
Copyright © 2011-2022 走看看