零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
16
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 30 | 装饰器的定义
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Python语言的特点
02 | Python的发展历史与版本
03 | Python的安装
04 | Python程序的书写规则
05 | 基础数据类型
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

课程源码、课件及课后作业地址:

https://gitee.com/geektime-geekbang/geekbangpython

登录 后留言

全部留言(16)

  • 最新
  • 精选
Switch
timeer(i_can_sleep())应改为timeer(i_can_sleep)吧, 传递的应该是函数,而不是返回值

作者回复: 是的应该为i_can_sleep函数名,感谢指正🙏

2018-08-05
17
奋斗人生
老师您好,为什么上节课你说闭包跟函数区别,是从原来传递变量变成传递函数。 那怎么这节课你总结,装饰器对比闭包,就是从原来传递变量变成传递函数。 闭包不是也是传递函数的吗?

作者回复: 您好, 不能通过一句话来概括和解释 函数、闭包、装饰器三者的关系。但是“闭包跟函数区别,是从原来传递变量变成传递函数。 装饰器对比闭包,就是从原来传递变量变成传递函数。”这两个说法单独拿出来都是不准确的 先看闭包和函数的区别: 首先闭包必须是函数内部的函数,闭包必须在内部函数引用外部函数中定义的值,返回值方面闭包函数必须返回嵌套函数。 装饰器和闭包的区别? 装饰器就是闭包,但是装饰器强调不修改原函数的基础上 增加功能,关注的是嵌套函数的外部函数

2020-08-20
3
锅ke24
老师您好,请问一个问题,下面这种调用,为何会输出两次时间? import time def timmer(func): def wrapper(): start_time = time.time() func() stop_time = time.time() print("运行时间是 %s 秒 " % (stop_time - start_time)) return wrapper @timmer def i_can_sleep(): time.sleep(3) num = timmer(i_can_sleep) num()

作者回复: @timmer 执行了一次,timmer(i_can_sleep) 又执行了一次。 装饰器体现的是“定义时”装饰,不是“运行时”装饰。这个方面要多理解一下。

2019-11-06
3
拯救不开心
老师,您说 装饰器实际是 外部函数名=外部函数名(内部函数名),怎么理解?

作者回复: 就是字面上的意思 @装饰器函数名 def 被装饰函数() 实际上运行就是 装饰器函数名=装饰器函数(被装饰函数)

2020-04-09
2
倡印
这里为什么要用闭包形式写 ? 直接函数写不行吗?

作者回复: 不行,实现装饰器必须要引入闭包这个功能(概念),装饰器实际是 外部函数名=外部函数名(内部函数名), 在外部函数的定义过程,内部函数必须在内存中装饰器才成立

2019-12-23
3
2
赵赵
老师闭包改成lambda的形式后,外层函数不是还有返回内部函数名字,传什么名字,都没定义内部函数的名字

作者回复: 把lamda表达式整个通过return返回 如: def a_line(a,b): return lambda x: a*x+b

2018-10-10
2
2
心见
为什么我写入同样的代码后,会报错呢('NoneType' object is not callable),而且不打印时间?

作者回复: 是不是把传可调用对象写成了调用? 如: def hello(): pass 可调用对象是hello,函数调用时hello()

2020-06-02
2
1
Geek_dafd5f
老师,我想问问,你本课程中附加题的代码能加一下注解吗?练习二 定义装饰器,实现不同颜色显示执行结果的功能。看不懂答案的代码 https://github.com/wilsonyin123/geekbangpython/tree/master/exercise/11%20%E8%A3%85%E9%A5%B0%E5%99%A8/answer

作者回复: 这里比较复杂的就是tpl,它是linux终端定义格式的固定写法,直接套用即可

2020-04-12
molly
尹老师,我不明白,为什么stop_time可以减start_time呢?他们都是time.time(),是中间加了一个sleep函数time.time()的值就变啦吗?

作者回复: stop_time和start_time都是一个时间戳,也就是执行那一刻记录了当前时间;sleep之后时间发生了改变,这里的减法就是统计时间变化的

2019-08-04
摇之
有两个问题我不太明白,统计程序运行时使用的时间不是用clock()函数嘛?wrapper()这个函数是不是装饰器固定的写法?

作者回复: 函数名字不是固定的,但是这种调用方法是固定的

2018-12-15
收起评论