零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
17
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 29 | 闭包的使用
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

登录 后留言

全部留言(17)

  • 最新
  • 精选
Switch
lambda a, b: lambda x: a * x + b 😂极简模式

作者回复: 给函数命名也是一门学问

2018-07-21
2
11
新的起点,新的开始^_^
但是如果不用闭包更好写啊,为什么还要写闭包呢 def cal(a, b, x): return a * x + b

作者回复: 按照上面的写法,所有功能实现是在同一个函数中的,如果我想在其他函数里使用a、b、x变量而不想声明为全局变量怎么办呢? 这时候我们一般有两种解决办法,一种是面向对象编程语言的“类”,另一种就是函数编程里的“闭包”; 它是一个函数调用外部函数的非全局变量的一种用法,可以实现数据的隐藏。我们最常用的是它的另一种写法:装饰器; 函数式编程理解起来还是有一定难度的,建议先了解闭包的概念,看完它的应用--装饰器章节视频,再回头来理解会较为容易。

2018-10-24
6
cngzsunny
最后改写成lambda表达式的这个示例有问题啊…… def a_line(a,b): return lambda x: a*x+b return arg_y 但是改成 def a_line(a,b): arg_y = lambda x: a*x+b return arg_y 又不是闭包形式了……

作者回复: lambda 表达式本身就是一个带返回值的函数,因此return lambda加上函数a_line的a b两个参数就已经组成了闭包。所以最后的return arg_y是多余的,建议再对lambda函数的演示代码执行一次,加深对匿名函数的理解。

2018-06-06
4
张大鹏|前端开发
怎样释放被闭包占用的内存?

作者回复: 闭包内存由解释器管理,闭包内层函数执行完,且没有对闭包的引用其堆内存自动销毁,关于python闭包内存资料较少,建议参考javascript闭包延时销毁的工作过程。推荐资料:JavaScript高级程序设计

2021-07-04
coder
这种闭包的写法,是不是就是函数的柯里化啊?

作者回复: 可以用闭包方式实现柯里化,但是闭包更要注意变量的作用范围。

2019-09-01
从前慢
def counter(first=0): cnt[0]=first return lambda : cnt[0] += 1 老师我想问下这里的lambda表达式为什么会报错,改成cnt[0] + 1的话就可以,但是起不到计数的作用,我想是把前面的代码用lambda表达式试一试,可是不成功,该如何修改这个返回值

作者回复: 把lambda改写成一个带名字的函数就理解了,如果写成+=,相当于函数的返回值变成了 return cnt[0] = cnt[0] + 1 不符合语法。另外上面的lambda语句写法也不正确

2018-07-14
kk
老师,您好,我是一个纯零基础的小白,我想问一下,那个传递x值得时候 为什么是 line1(10) 而不是 arg_y(10) ?
2020-07-16
2
功夫熊猫
闭包还有一个用处就是可以形成一个独立的空间。可以类似于vue2的data函数。就必须要返回一个闭包,否则数据就会乱
2022-02-09
怀揣梦想的学渣
学了闭包就发现lambda是真好使
2022-02-02
Leolee
学完这两件,顺便把初中数学也温习一遍,现在好像对复杂运算不害怕了。哈哈!
2021-04-09
收起评论