欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

5.2Python函数(二)

程序员文章站 2022-07-23 23:41:03
目录 [TOC] 前言 这一篇式相继上一篇5.1Python函数(一)的进阶文章。 一个重要的思想是:我们把”函数名“当成一个变量来处理。 (一)偏函数 ==1.说明== 偏函数:在不修改原函数的原函数前提下,修改函数的默认值,新建的函数叫偏函数。 ==2.原代码== ==3.显示效果== (二)高 ......

目录

目录

前言

这一篇式相继上一篇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.显示效果==

5.2Python函数(二)

(二)高阶函数

==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.运行效果==

5.2Python函数(二)

(三)返回值函数

==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.运行效果==

5.2Python函数(二)

(四)匿名函数

==1.说明==

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

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

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

==2.源代码==

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

==3.运行效果==

5.2Python函数(二)

(五)闭包函数

==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.运行效果==

5.2Python函数(二)

作者:mark

日期:2019/02/04 周一