下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 22 | 函数的定义和常用操作
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

零基础学Python

共71讲 · 71课时·约540分钟
16024
免费
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与s...
46 | 正则表达式库替换函数sub...
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹...
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumP...
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代...
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式ge...
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链...
68 | Beautiful Soup的安装和...
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下...
71 | 如何分析源代码并设计合理...
本节摘要

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

https://github.com/wilsonyin123/geekbangpython

精选留言(42)

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

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

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

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

    4
  • 2019-01-18
    老师我是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编码打开

    2
  • 2019-01-08
    老师,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)也有默认的编码格式的,如果和文本的编码不一致会报错的

    2
  • 2018-10-31
    老师请教个问题:
    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类,同样可迭代,那就没有必要转换成列表再遍历了呀。

    2
  • 2019-08-03
    函数这一块听不懂了😭
    1
  • 2019-04-17

    1.创建一个函数,用于接收用户输入的数字,并计算用户输入数字的和。

    def fun1():
        n1=int(input('请输入第一个整数:'))
        n2=int(input('请输入第二个整数:'))
        sum1=n1+n2
        print('%s + %s = %s' %(n1,n2,sum1))


    fun1()


    def fun2():
        n_num=input('请输入多个整数(中间用逗号分隔,回车确认):')
        n_list=n_num.split(',')
        s=0
        for i in range(len(n_list)):
            s+=int(n_list[i])
        print('这些数的和是:%s' %(s))

    fun2()
    展开
    1
  • 2018-09-23
    请问老师我发现为什么我同样的代码在pycharm 中运行报错。我在命令行之行ypthon3 又能正常运行?
    我应该要怎么去改呢?这个文件我在pycharm运行的时候都是报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)。这个是编码的问题。我什么都不该直接用python3 执行又是可以的。这种问题有没有一个统一标准的解决方法呢?

    作者回复: 请检查三个地方
    1 Pycharm使用的编译器是否为python3
    2 Pycharm界面右下角显示的源代码文件是否为UTF-8
    3 是否文件保存路径为中文(新版本的Pycharm不会有这个问题)

    1
  • 2018-06-21
    老师,我输出的是乱的文字。
      开始的报错是这样的
    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功能还可以转换成不同的编码格式供编程测试

    1
  • 2019-10-01
    i = 1
    for line in f2.readlines():
        if i % 2 == 1:
            print(line)
        i += 1
    这里的 i 作用是什么呢?i 和 line 的关系是什么?
    展开

    作者回复: 1 i的作用主要判断奇数还是偶数行
    2 如果是奇数行就输出

  • 2019-09-24
    # 读取人物名称
    f = open('name.txt')
    data = f.read()
    print(data.split('|'))

    我的 pycharm 在运行以上代码时会出现报错:SyntaxError: Non-ASCII character '\xe8' in file /Users/toi/PycharmProjects/timegeekbang.com/sanguo.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    为什么老师的演示不会?
    展开

    作者回复: SyntaxError Non-ASCII character '\xe8' in file /sanguo.py on line 2 see http://python.org/dev/peps/pep-0263/ for details

    很明显是使用python2 版本的,而且还有字符集的问题

  • 2019-09-18
    with open('name.txt') as f:
         for line in f:
            names = line.split('|')
            print(names)
         for name in names:
            name_num = find_item(name)
            name_dict[name] = name_num
    这两个for实例中有缩紧 想知道为什么
    展开
  • 2019-08-28
    老师好,在读取name.txt的时候,我用gkb打不开,用GB18030则会出现
    璜歌憶浜畖闂滅窘|鍔夊倷|鏇规搷|瀛瑠|闂滅窘|寮甸|鍛傚竷|鍛ㄧ憸|瓒欓洸|榫愮当|鍙搁Μ鎳縷榛冨繝|棣秴
    这些莫名其妙的文字,请问该怎么解决?

    作者回复: 我提供两个解决办法
    1 如果使用pycharmIDE的话,打开文本文件,在右下角显示了文件的字符编码,根据编码打开
    2 用python的chardet库判断文件字符集
    import chardet
    bstr = open("name.txt").read().encode()
    print(chardet.detect(bstr))

  • 2019-08-11
    老师,怎么确定下载下来的文件是utf-8编码还是GBK呢?只能尝试吗?pycharm有哪里可以看到这个文件的编码采用什么吗

    作者回复: 使用pycharm打开.txt格式的文本文件,在右下角会显示字符编码

  • 2019-08-03
    name_num = find_item(n)
    name_dict[n] = name_num
    这两个语句为什么不直接写成:name_dict[n] = find_item(n)?

    作者回复: 为了视频讲解的时候逐条给大家分析,应该写为 :name_dict[n] = find_item(n)

  • 2019-08-03
    老师,在本段视频结尾,定义函数部分有一个变量:name_num;在双for循环中也有一个name_num,这两个变量不互相冲突吗?
  • 2019-08-03
    老师,双for语句没有理解它的执行顺序,特别是:line in f,这里面的line是什么意思不是特别理解。按照我理解的双for循环,应该是第二个for循环完成了,再去循环第一个for语句。
    for line in f:
        names = line.split("|")
        for n in names
            print(n)
    展开

    作者回复: for循环的嵌套:内层全部循环一次之后外层循环执行一次,内层再全部循环一次外层再循环一次,以此类推

    1
  • 2019-07-30
    f = open('name.txt')
    data = f.read()
    print data.split('|')

    实际输出为['\xe8\xaf\xb8\xe8\x91\x9b\xe4\xba\xae', '\xe5\x88\x98\xe5\xa4\x87', '\xe6\x9b\xb9\xe6\x93\x8d', '\xe5\x90\x95\xe5\xb8\x83', '\xe5\x85\xb3\xe7\xbe\xbd', '\xe8\xb5\xb5\xe5\xad\x90\xe9\xbe\x99', '\xe5\x91\xa8\xe7\x91\x9c', '\xe5\x8f\xb8\xe9\xa9\xac\xe8\x81\xaa', '\xe9\xbb\x84\xe5\xbf\xa0', '\xe9\xa9\xac\xe8\xb6\x85']

    请问为什么会出现乱码,单独print data则不会出现该情况。是否是因为我的环境是Python2.7?
    展开

    作者回复: 和python版本有关,也和文本编码有关,统一为utf-8就可以正常输出了

    1
  • 2019-06-10
    你好,使用github上的代码,运行显示:
      File "/Users/flu/PycharmProjects/test1/sanguo_V2.py", line 17
        names = line.split('|')import re
                                    ^
    SyntaxError: invalid syntax

    Process finished with exit code 1
    展开

    作者回复: 您好,“ (' ” 这两个符号应该是全角的括号或者单引号,输入法改为英语,使用英文符合重新输入一次。
    SyntaxError为语法错误一般为全角半角符号引起的

  • 做Java的来跟着学学python😁😁,垮下语言

    作者回复: 横向对比各个语言的特点 是学习python的好方法之一,加油