写点什么

[Python 公开课] 零基础玩转 Python 基础篇 ---- 第七节:Python 中的高级函数

作者:是Dream呀
  • 2022 年 2 月 15 日
  • 本文字数:2101 字

    阅读完需:约 7 分钟

[Python公开课]零基础玩转Python基础篇----第七节:Python中的高级函数

📢📢📢📣📣📣🌻🌻🌻Hello,大家好我叫是 Dream 呀,一个有趣的 Python 博主,多多关照😜😜😜🏅🏅🏅CSDN Python 领域优质创作者,大二在读,欢迎大家找我合作学习(文末有 VX 想进学习交流群 or 学习资料 欢迎+++)💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺🍉🍉🍉“一万次悲伤,依然会有 Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈🌟🌟🌟✨✨✨


前言: 📢📢📢【Python 公开课】系列课程是针对 Python 入门 &进阶打造的一全套课程,如果你喜欢的话就抓紧收藏订阅起来吧~💘💘💘【报团取暖】🆘🆘🆘🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者在文末添加我的 VX,我会拉你进学习交流群,我们一起交流学习,报团打卡


@TOC

1️⃣ 学习目标----提前知💞💞💞

☀️☀️☀️一个崇高的目标,只要不渝地追求,就会成为壮举!


  1. 学习 Python 的闭包

  2. 了解什么是装饰器及其用法

  3. 掌握常见 Python 内置函数

2️⃣ 学习任务----我能行🍻🍻🍻

🏅🏅🏅穷且益坚,不坠青云之志!

⚽️01 闭包

闭包定义:Python 函数是支持嵌套的。 如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被称为闭包。闭包需要满足如下 3 个条件:


  • 存在于两个嵌套关系的函数中,并且闭包是内部函数;

  • 内部函数引用了外部函数的变量(自由变量);

  • 外部函数会把内部函数的函数名称返回。


闭包示例:


⚽️02 装饰器

装饰器的概念

假设我们已经开发了一个本有的函数,后续可能会增加临时的需求,例如插入日志,我们可以增加一个包裹函数,由它来负责这些额外的需求,这个包裹函数就是 装饰器装饰器主要应用在如下场景:


  1. 引入日志;

  2. 函数执行时间统计;

  3. 执行函数前预备处理;

  4. 执行函数后清理功能;

  5. 权限校验;

  6. 缓存。


装饰器是一个函数,它需要接收一个参数,该参数表示被修饰的函数。例如,有如下一个装饰器函数:


def myDectoration(func):    def inner():        print("正在执行内部函数")        func()    return inner
def printMessage(): print("--------欢迎您-------")pm = myDectoration(printMessage)pm()# 正在执行内部函数# --------欢迎您-------
复制代码


  • 装饰器是个嵌套函数

  • 内部函数是一个闭包。

  • 外部函数接收的是被修饰的 函数(func)


通过在函数定义的前面添加 @符号和装饰器名,实现装饰器对函数的包装。给 f1 函数加上装饰器,示例如下:


@w1def f1():    print(’f1')
复制代码


此时,程序会自动编译生成调用装饰器函数的代码,等价于:


f1 = w1(f1)
复制代码

多个装饰器

多个装饰器应用在一个函数上,调用顺序是从下至上


@w1@w2def f1():    print(‘---f1---’)
复制代码


执行顺序:先执行 @w2,后执行 @w1

装饰有参数的函数

看看下面的代码,运行结果是什么呢?


def w1(func):  def inner(a,b):    print('开始验证权限')    func(a,b)  return inner@w1def tes(a,b):    print('a=%d,b=%d'%(a,b))tes(1,2)# 开始验证权限# a=1,b=2
复制代码

⚽️03 常见 Python 内置函数

map 函数

map 函数会根据提供的函数对指定的序列做 映射。map 函数的定义如下:


map(function, iterable,…)
复制代码


第 1 个参数是函数的名称;第 2 个参数表示支持迭代的容器或者迭代器。map 函数的作用是以参数序列中的每个元素分别调用 function 函数,把每次调用后返回的结果保存为对象。


func = lambda x:x+2result = map(func, [1,2,3,4,5])print(list(result))
复制代码

filter 函数

filter 函数会对指定序列执行 过滤操作。filter 函数的定义如下:


filter(function,iterable)
复制代码


第 1 个参数可以是函数的名称;第 2 个参数表示的是序列、支持迭代的容器或迭代器。


func = lambda x:x%2result = filter(func, [1, 2, 3, 4, 5])print(list(result))
复制代码

3️⃣ 本章小结----知难易🏆🏆🏆

😊😊😊人生是跋涉,也是旅行;是等待,也是重逢;是探险,也是寻宝;是眼泪,也是歌声!


本章继续带大家探讨了函数的高级内容,包括 闭包、装饰器,以及与序列相关的3个内置函数。通过对本章内容的学习,大家应该对函数有了更深地理解,并能够熟练地应用到开发中。

4️⃣ 小试牛刀----习题讲解🌈🌈🌈

🏃 🏃 🏃本期问题

✍第一题

1.将一个正整数分解质因数。例如:输入 90,打印出 90=233*5。


# -*-coding:utf-8 -*-# @Author:到点了,心疼徐哥哥# 奥利给干!!!# 14.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。num = int(input('请输入:'))
for i in range(2, num): while num!=1: if num % i == 0: num = num / i if num==1: print('%d'%i,end='') else: print('%d*'%i,end='') else: break
复制代码

✍第二题

2.求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加由键盘控制。


a = int(input('请输入一个数:'))b = int(input('请输入多少个数相加:'))c=0d = 0for i in range(b):    c=c+a*10**i    d += cprint(d)
复制代码

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~




用户头像

是Dream呀

关注

Python领域优质创作者 2021.03.30 加入

2021年度博客之星TOP100,2021年度领域TOP5 Python领域优质创作者,交流、合作、学习,欢迎私信我VX+++ 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!

评论

发布
暂无评论
[Python公开课]零基础玩转Python基础篇----第七节:Python中的高级函数