前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5.2Python函数(二)

5.2Python函数(二)

作者头像
py3study
发布2020-01-17 13:09:03
3930
发布2020-01-17 13:09:03
举报
文章被收录于专栏:python3python3

目录

目录

前言

这一篇式相继上一篇5.1Python函数(一)的进阶文章。 一个重要的思想是:我们把”函数名“当成一个变量来处理。

(一)偏函数

==1.说明==

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

==2.原代码==

代码语言:javascript
复制
# 定义一个有默认值的函数
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
01.png

(二)高阶函数

==1.说明==

函数名也是一个变量,也可以通过赋值,传递给其他变量。 当函数的形参接收的是一个函数名的时候,则称该函数是高阶函数

==2.源代码==

代码语言:javascript
复制
# 动态的计算两个数
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
02.png

(三)返回值函数

==1.说明==

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

==2.源代码==

代码语言:javascript
复制
# 定义一个返回值函数
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
03.png

(四)匿名函数

==1.说明==

没有名字的函数,我们称匿名函数,也称lambda函数。 语法:lambda var1, var2,……:表达式 注意:只能写一个表达式,而且只能用一次。

==2.源代码==

代码语言:javascript
复制
# 定义一个匿名函数
func = lambda x, y: x + y
result = func(1, 2)
print("结果是:", result)

==3.运行效果==

04.png
04.png

(五)闭包函数

==1.说明==

首先清楚两个概念: 外部函数:在外出定义的函数。 内部函数:嵌套在一个函数里面的和函数。 闭包函数的定义:(满足三个条件)

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

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

==2.源代码==

代码语言:javascript
复制
# 定义一个闭包函数
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
06.png
作者:Mark
日期:2019/02/04 周一
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 前言
  • (一)偏函数
    • ==1.说明==
      • ==2.原代码==
        • ==3.显示效果==
        • (二)高阶函数
          • ==1.说明==
            • ==2.源代码==
              • ==3.运行效果==
              • (三)返回值函数
                • ==1.说明==
                  • ==2.源代码==
                    • ==3.运行效果==
                    • (四)匿名函数
                      • ==1.说明==
                        • ==2.源代码==
                          • ==3.运行效果==
                          • (五)闭包函数
                            • ==1.说明==
                              • ==2.源代码==
                                • ==3.运行效果==
                                  • 作者:Mark
                                  • 日期:2019/02/04 周一
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档