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 周一

posted @ 2019-02-04 14:08  梦并不遥远  阅读(636)  评论(0编辑  收藏  举报