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

登录 后留言

全部留言(9)

  • 最新
  • 精选
卡本
请问老师,我把4个例子单独写出来后,为什么例子4的global var1没有影响前面例子中var1的值呢?不应该是所有var1=456么?感谢老师! 以下为代码: #函数的变量作用域 #1.当var1在函数内部没有被定义,var1取函数外部定义的变量的值 var1=123 def func(): print(var1,'\n===') func() #2.当var1在函数内部与外部都被定义,var1取函数内部定义的变量的值 var1=123 def func(): var1=456 print(var1,'\n===') func() #3.当var1在函数内部与外部都被定义,函数内部变量赋值只影响函数内部 # (缩进区域)的变量,不会对外部有影响 var1=123 def func(): var1=456 print(var1) func() print(var1,'\n===') # 4.要想函数内部变量赋值 影响函数外部的变量,用global var1=123 def func(): global var1#全局变量 var1=456 print(var1) func() print(var1,'\n===') 以下为结果: C:\Users\ks\AppData\Local\Programs\Python\Python37\python.exe C:/Users/ks/PycharmProjects/Python_jksj/func_test.py 123 === 456 === 456 123 === 456 456 === Process finished with exit code 0

作者回复: 因为global在最后的函数执行才生效啊,试试在输出增加print(id(var)),看看你能否区分开同名的var是否为相同的两个内容?

2018-11-25
2
水母
老师,你好。函数练习题第一题,我运行答案的代码出现了下面的错误提示: num1, *_, num2 = list(two_num) ^ SyntaxError: invalid syntax 请问这个怎么解决。另外我尝试打印list(two_number),如果输入 2空格4 ,会报错; 但输入 2,4 ,就能成功打印出结果[2, 4]。这是为什么?

作者回复: 注意看报错信息是语法错误,是否使用了中文的全角“,”而不是英文的“,”

2018-07-29
1
royshu
def test(b, c): b[0] = 3 c = 10 a = [0, 1, 2, 3] d = 0 test(a, d) print(a, d) 老师,能否解释下列表为什么外面的变量跟着改变,这个在闭包的科也有用到,是否能这样理解:列表改变单一元素的值不影响整个列表的内存,而整形这一类相当于重新定义,反而受到函数作用域的影响不能传递到外部

作者回复: 关于变量作用域的问题可以参考作用域、闭包的定义章节视频和下方精选留言,不再重复解答了。 另一个问题是赋值语句的问题,在Python中赋值语句是引用对象的内存,而不是复制对象; 例如: a = [0, 1, 2, 3] 要理解成为一个列表[0, 1, 2, 3]贴上了一个标签a; 当使用 a = [4, 5, 6] 时,相当于把a标签贴给了[4, 5, 6],而列表[0, 1, 2, 3]所在的内存并没有发生变化 因此无论在函数里面还是外面,修改了列表,就是直接对内存存储的信息做了改动,而整形变量要遵循变量作用域LEGB 原则。变量作用域涉及的知识点比较多,建议通过搜索引擎补充了解变量作用域、深拷贝、浅拷贝相关知识。

2018-07-25
Zefantic
😂😂😂没看过的视频也莫名其妙的从中间开始。🤪

作者回复: 视频感受到了你想学Python的迫切希望,加油

2018-05-31
食神0878
老师讲的干货满满,需要反复看几遍才能吸收
2020-03-27
1
yuxin
老师讲课逻辑很强,零基础确实需要多看几遍,但是比b站的课质量高多了,学到知识。
2022-02-22
怀揣梦想的学渣
视频02:28 global这行如果和26行互换位置,就会报错(SyntaxError: name 'num1' is assigned to before global declaration),查文档发现了原因(https://docs.python.org/3/reference/simple_stmts.html#the-global-statement)
2022-02-02
Leolee
这一节堪称短小精悍又干货满满啊!
2021-04-07
水母
老师,你好。函数练习题第一题,我运行答案的代码出现了下面的错误提示: num1, *_, num2 = list(two_num) ^ SyntaxError: invalid syntax 请问这个怎么解决。另外我尝试打印list(two_number),如果输入 2空格4 ,会报错; 但输入 2,4 ,就能成功打印出结果[2, 4]。这是为什么?
2018-07-29
收起评论