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

登录 后留言

全部留言(83)

  • 最新
  • 精选
feiyu
这是我学过的最容易理解的python课程,之前看过好多所谓大牛出的视频根本不考虑初学者的水平

作者回复: 谢谢,希望您能够在课程中有所收获。

2018-08-28
32
李晓东
老师请教个问题: with open('name.txt') as file: for line in file: 这里file不应该是指向name.txt的文件吗?仅仅是打开了还没有读取,为什么就可以如for line in file这样用? 我感觉正确的语法应该是for line in file.readlines 。 但是发现这两种都是可以的。 老师能解释一下为什么可以像for line in file这样用吗?

作者回复: 想想for …in…结构的in后面可以接什么东西呢?如果查官方文档你就会发现后面接的是序列,那么序列哪种特性可以通过for…in便利呢?就是它的可迭代,所以这里的for…in…后面的对象只要可迭代就可以使用了。 那接下来就简单了,file.readlines是个列表,列表就是序列的一种啊,所以for…in就能处理了,那file呢?通过type()函数查看是file类,同样可迭代,那就没有必要转换成列表再遍历了呀。

2018-10-31
2
11
圣林
老师,为什么读取人名的那段代码要 for line in f: names = line.split("|") 写这样一个遍历呢?我自己尝试不用遍历也可以实现。不知道区别在哪?或者为什么要用遍历呢? names = f.read().split("|")

作者回复: 用遍历是为了让从其他编程语言转过来的同学熟悉一下python的for语句的写法,也为了讲解时清楚每一个步骤的功能,其实是不够Pythonic的,建议用第二种方法;我在后面一样用了同样方法讲了open()和上下文管理器功能,等同学们熟悉了这两个功能之后,我们会用更优雅的写法 with open来替换掉不够Pythonic的代码。

2018-07-31
2
10
Tim哥
老师,在data.split('|') 前面 输入print 后,自动补全括号 是如何操作的?快捷键是? 2018-12-05  作者回复 print函数和后面内容有空格时,输入左括号可以自动补全右括号。pycharm还有很多功能可以帮助开发者提高效率,可以参考官方文档http://www.jetbrains.com/help/pycharm/meet-pycharm.html 问题:我看视频的时候,看见老师操作把print输入完后,data.split('|') 这个内容自动放到print的括号去。我是想问这个是怎么操作的?

作者回复: 复制粘贴和视频剪辑,想让大家看的更流畅,并不是黑魔法

2018-12-18
7
U.均宇
老师,pycham解码的问题: f2=open('sanguo.txt',encoding = 'gb18030') print(f2.read()) 直接打开py文件黑框能正确运行,但是在pycham端运行却报错:UnicodeEncodeError: 'gbk' codec can't encode character '\u4986' in position 96697: illegal multibyte sequence 明明是encoding = 'gb18030'却报错成'gbk'。 这是什么原因?要怎么解决?

作者回复: 1 请先搜索gbk gb18030 gb2312 的区别 2 改为gbk(和源文件一样的编码)打开即可 3 操作系统(windows)也有默认的编码格式的,如果和文本的编码不一致会报错的

2019-01-08
4
6
ls
老师,我输出的是乱的文字。 开始的报错是这样的 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 21: illegal multibyte sequence 后来加了encoding = "GB18030" # #读取人物名称 f = open("s-name.txt",encoding = "GB18030") data = f.read() print(data.split("|"))#数据用|分割。 但是输出的是乱的中文: ['璇歌憶浜畖鍏崇窘', '鍒樺\ue62c', '鏇规搷', '瀛欐潈', '寮犻\ue5e3', '鍚曞竷', '鍛ㄧ憸', '璧典簯', '鍙搁┈鎳縷榛勫繝', '椹\ue103秴'] 我是win10系统 求老师解惑……

作者回复: 这是非常典型的字符编码不一致导致的错误,例如txt文件是utf-8编码,无论使用gbk还是gb18030都无法正确读取的,最简单确定编码的方法是,可以在pycharm打开文本文件,在上方会提升该文件的编码,通过右下角的编码的convert功能还可以转换成不同的编码格式供编程测试

2018-06-21
4
Geek_216fd5
请老师指教下,这么写代码好不好: import re def getHeronameList(f): returnList = [] for line in f: returnList = line.split('|') return returnList def getHeroNameToFreq(f, names_list): returnDict = {} data = f.read().replace('\n', '') for name in names_list: returnDict[name] = len(re.findall(name, data)) return returnDict def main(): names_list = [] hero_nameToFreqency_dict = {} with open('name.txt', encoding='utf-8') as f: names_list = getHeronameList(f) with open("sanguo.txt", encoding='gb18030') as f: hero_nameToFreqency_dict = getHeroNameToFreq(f, names_list) print('英雄', '次数') for key in hero_nameToFreqency_dict.keys(): print(key, hero_nameToFreqency_dict[key]) if __name__ == '__main__': main()

作者回复: 1 首先应该有注释,每个函数的功能应该描述清楚 2 考虑到只有函数,没有学习其他功能,目前拆分还算合理 3 更合理的参考 SOLID原则 与 设计模式

2020-07-10
2
Tom
老师,在编码哪里,我换了很多不同的编码依然没法解决。。 UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 0: illegal multibyte sequence 我换成了GBK依然报错,尝试过不同的字符集也一样。。

作者回复: 这是Python2版本的提示,你的电脑上应该安装了python2 python3 两个版本, 看一下解释你的代码的python路径,换成python3的

2020-04-13
2
2
心纲
老师我是win7系统 'sanguo_T.txt'是从您GitHub上下载的非UTF-8编码文件。 #报错,提示: UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 186008: illegal multibyte sequence f3 = open('sanguo_T.txt', ) f3.read() # 可以正常执行 f3 = open('sanguo_T.txt', encoding='GB18030') f3.read() #报错,提示: UnicodeEncodeError: 'gbk' codec can't encode character '\u4986' in position 96697: illegal multibyte sequence f3 = open('sanguo_T.txt', encoding='GB18030') print(f3.read()) #sanguo_utf8.TXT文档也无法print: 老师,我该怎么解决无法print的问题呢?我试着在程序开头添加# coding:utf-8 也没有用。麻烦老师解答一下,谢谢。

作者回复: f3 = open('sanguo_T.txt', encoding='GBK') 使用gbk编码打开

2019-01-18
4
2
royshu
您课程中的各种方法的说明文档一般去哪里看?英文和中文都需要

作者回复: 官方文档在docs.python.org可以看到,是英文版的,中文文档在搜索引擎里面搜 python3中文手册即可,高于python3.5的版本即可,但是翻译过来一般都会加上作者自己的理解,建议和英文文档对照着看,避免因作者笔误或理解不到位导致你遇到问题。

2018-07-15
2
收起评论