零基础学 Python(2023 版)
尹会生
太乙人工智能技术合伙人 & 项目总监
60050 人已学习
新⼈⾸单¥68
课程目录
已完结/共 124 讲
结束语 & 结课测试 (2讲)
零基础学 Python(2023 版)
登录|注册
留言
15
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 17|告别新手村:Python 编程基础知识
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程介绍:这次我们都做了哪些升级?
内容综述:明确学习目的
01|如何配置 Python 开发环境?
02 | 常用 IDE:如何提高开发效率?
03 | 如何站在官方文档的肩膀上自己“造轮子”?
04 | 怎样运行你的第一行代码?
05 | 怎样使用 Gitee 管理你的代码?
06 | 学习编程有问题?去这里找答案!
07|跨越门槛:Python 开发环境总结及实现原理
08 | 修炼基本功:浅析输入输出
09 | 变量:如何让计算机临时存储数据?
10|字符串(上):Python 是如何处理单词的?
11|字符串(下):Python 是如何处理单词的?
12|存储数字应该采用哪种数据类型?
13|何时使用数,何时使用字符串?
14|注释:如何写程序的说明书?
15|小试牛刀:如何制作简单计算器?
16|变量命名规范:如何编写优雅的程序?
17|告别新手村:Python 编程基础知识
18|内置数据类型包括哪几种?
19|列表如何处理同类数据?
20|常见常新:列表的常见操作
21|元组:如何处理一次性数据?
22|常见常新:集合的常见操作
23|字典:如何处理映射类型的数据?
24|常见常新:字典的常见操作(上)
25|常见常新:字典的常见操作(下)
26|小试牛刀:如何利用类型转换实现手机通讯录?(上)
27|小试牛刀:如何利用类型转换实现手机通讯录?(下)
28|常见的内置数据类型都何时使用?
29|避坑指南:内置数据类型的常见错误
30|内置数据类型参考:如何使用官方文档与帮助?
31|再回首:“内置数据类型”单元小结
32|if 语句:数据流程出现分支时,怎样编写程序?
33|match 语句:如何通过 match 关键字来处理程序的分支逻辑?
34|while 循环:需要多次重复执行某段程序时,怎么做?
35|for 循环:如何遍历一个对象里的所有元素?
36|语句嵌套:如何处理多重循环的问题?
37|小试牛刀:如何设计一个飞机大战的程序?
38|避坑指南:判断和循环中的常见错误
39|再回首:“判断循环”单元小结
40|输入:如何接收用户通过键盘输入的数据?
41|格式化输出:如何将执行结果通过屏幕输出?
42|F-strings:如何通过定义好的格式进行输出?
43 | 常见常新:文件的打开
44|文件编码:如何解决不同操作系统的文件乱码问题?
45|常见常新:文件的读写
46|常见常新:文件的关闭
47|小试牛刀:如何使用 Python 合并多个文件?
48|再回首:“输入输出与文件操作”单元小结
49|函数的定义:如何优雅地反复引用同一段代码?
50|函数的参数:怎样实现函数与外部数据通信?
51|函数的参数:当函数操作对象不固定时怎么处理?
52|函数的返回值:如何得到函数的执行结果?
53|小试牛刀:如何利用函数实现电商购物车功能?
54|避坑指南:列表作为参数传递出错了怎么办?
55|高阶函数:函数对象与函数调用的用法区别
56|装饰器:函数嵌套的定义与调用的区别
57|再回首:“函数”单元小结
58|编程思想不同会导致怎样的代码差异?
59|类与实例:如何使用面向对象的思想编写程序?
60|类的继承:如何解决代码重用的问题?
61|类的装饰器:如何改变类方法的功能?
62|小试牛刀:如何开发自动咖啡机?
63|避坑指南:类的常见错误
64|init 方法:如何为对象传递参数?
65|再回首:“类”单元小结
66 | 模块的导入:如何使用其他人编写好的代码功能?
67 | 标准库:Python 默认提供的便捷功能有哪些?
68 | 自定义模块:如何编写一个完整功能?
69 | 第三方模块的使用:如何使用其他人编写的代码?
70 | 小试牛刀:如何使用 Python 为函数求导?
71|再回首:“模块与标准库”单元小结
72|初识异常:异常的产生与分类
73|异常捕获:出现异常时,如何利用程序进行处理?
74|自定义异常捕获:如何定义业务异常?
75|避坑指南:编写捕获异常程序时经常出现的问题
76|再回首:“异常处理”单元小结
77|扩展数据类型:怎样使用更复杂的数据类型?
78|魔术方法:怎样通过类构造自己需要的数据类型?
79|怎样将 Python 和 C++ 结合起来混合编程?
80|怎样将已有算法改造成符合项目的特定算法?
81|设计模式:怎样合理组合多个函数和类?
82|Redis 数据库:怎样使用 NoSQL 数据库?
83|关系型数据库:怎样使用关系型数据库?
84|计算资源充足时,如何通过并行设计提高效率?
85|多进程间如何通信?
86|再回首:“高级数据类型与算法”单元小结
87|理论盘点:数据分析的流程及对应的 Python 库
88|理论盘点:数据采集的方法与 HTTP 协议
89|理论盘点:任务的并行执行原理
90|理论盘点:非规范化数据处理的基础与正则表达式
91|如何获取网页上的数据并存储到文件?
92|小试牛刀:如何将数据进行图形化展示?
93|再回首:“数据分析”单元小结
94|理论盘点:文件类型与对应的 Python 函数库
95|如何批量读取 Excel 文件?
96|如何实现数据的批量格式转换?
97|如何扩展数据类型?
98|再回首:“办公自动化”单元小结
99|理论盘点:Web 客户端与服务端
100|理论盘点:MVC 模型是什么?
101|如何使用Django搭建简单的Web服务器?
102|如何使用Django-admin实现文章上传?
103|如何使用Django实现文章发布?
104|再回首:“Web开发”单元小结
105|理论盘点:人脸识别的一般步骤
106|理论盘点:人脸识别常用的 Python 库有哪些?
107|怎样通过 OpenCV 采集视频信号?
108|如何训练人脸模型?
109|怎样设计人脸识别系统?
110|再回首:“计算机视觉”单元小结
111|聚焦异同:物联网与互联网有啥不一样?
112|理论盘点:基础但不简单的 TCP 协议
113|理论盘点:物模型与模组
114|如何为 ESP32 安装 MicroPython?
115|怎样通过 MQTT 协议构建消息队列?
116|小试牛刀:在 OLED 屏幕和手机远程同时显示室内温度
117|再回首:“物联网”单元小结
118|结束语:人生苦短,我用Pyhon
结课测试|来赴一场满分之约吧!
直播加餐|与AI共同编程,用ChatGPT学Python
直播加餐|用OpenAI API理解Python数据类型
直播加餐|掌握Gradio框架:为 AI Agent 程序定制界面
本节摘要

你好,我是尹会生。

在前面几节课里,我们着重讲了 Python 中最基础也最常用的功能——变量赋值,并为你介绍了两种基础数据类型字符串和整数,你会发现将这两种数据类型赋值给变量之后,Python 支持了非常多的内置函数,让你操作起这两种类型来更得心应手。

在掌握了操作技巧之后,我们将深入原理,理解程序的行为,加深你的记忆。变量赋值的概念和你在学习 C、Java 等其他编程语言时,是略有差异的,这就会导致你在编写程序的时候容易产生 Bug,所以我想在这一章的总结部分,再为你详细剖析一下变量赋值的内部运行原理,让你更好地理解 Python 的运作模式。

首先,Python 的变量名是为变量贴标签,而不是装着变量的盒子。

我用一个例子带你来理解一下变量名是标签这句话。

复制代码
var1 = 123
var2 = 456
var1 = var2
var2 = 789
print(var1)

以上程序,我实现了对 var1 和 var2 变量的多次赋值,你能在没有运行程序之前,就猜到它的执行结果吗?

当你拿着这段程序在 Python 解释器运行之后,如果发现和你猜想的结果不同,也不要太灰心,我现在就带你来分析一下 Python 解释器在背后到底做了什么。

相信你在学习 C 语言时,为了更形象地记住变量这个抽象的概念,老师会和你说变量是个盒子,为变量赋值意味着在盒子里放入值。

登录 后留言

全部留言(15)

  • 最新
  • 精选
小昭
前面几节课程能听懂,作业也能独立完成,这节总结课看晕了。。。我决定先放一放,下周继续往下学习,然后下周末再来复习一下这一节

作者回复: 我提供一个学习方法, 你可以尝试先做个标记,然后继续后面的内容,看看回过头来,是否能针对这一节不懂的地方,提出更具体的问题。 欢迎留言给我

2023-07-16
2
1
Ethan New
变量赋值贴标签的这套理论感觉是错误的,var1 = var2,按照你的理论是var1 和 var2 的标签贴到了同一个箱子上,原来var1被贴的箱子没有标签,也就没法访问,实际并不是这样的。

作者回复: 给箱子贴标签是一种比喻,更严谨的说法是: python这种机制被称为"引用赋值",Python中的变量名只是对象的引用,而不是对象本身。 当你执行 var1 = 12345 时,Python会在内存中为整数 12345 创建一个对象,然后让变量名 var1 指向(引用)这个对象。 当你执行 var2 = var1 时,Python不会创建一个新的对象,而是让变量名 var2 指向与 var1 相同的那个整数对象 12345。这意味着 var1 和 var2 现在都指向同一个对象。 原来 var1 所指向的对象并没有被覆盖或删除,它仍然存在于内存中,只是现在有两个变量名 var1 和 var2 都指向同一个对象而已。

2024-02-06
Zeros
第二段代码,我们在终端执行 python.exe 后,进入到交互模式,再次运行,发现没有共用一个盒子,通过 is 比较操作符也印证了我的结论。 为什么会出现两种不同的结论呢?这其实是 Python 为了优化运行效率,在 Python 解释器中做的一项优化工作,即在交互模式下,字符串中如果只包含普通字符(a-z A-Z),且不超过 65535 个字符长度(Python3.8 版本以前限制字符串字符串长度为 20 个字符),Python 解释器只在内存中保留一份该字符串对象-----是不说错了,在第二个例子python交互模式下,是保留了两份该字符串对象

作者回复: 可以具体贴一下代码,我来帮你看一下。 因为目前留言在总结这一节下面,我没办法对应到具体的代码

2023-09-04
2
Geek_443d61
number1 = -7 number2 = -7 print(number1 is number2) 为啥我这显示 True

作者回复: 虽然小整数缓存(即 -5 到 256 的范围)是 Python 的一个特性,但实际的缓存范围和特定的实现或平台设置可能有关。大多数常规的 CPython 实现都遵循这个缓存范围,但在某些情况下,其他数字可能也会被缓存,尤其是如果你的 Python 版本、实现或平台有所不同。 可以提供一下你的平台和版本

2023-08-25
流云箴逝水
var1 = "hello!" var2 = "hello!" id(var1) id(var2) print(var1 is var2) #需要加上print才能输出比较结果

作者回复: 没错,如果不在Python交互环境,默认为变量赋值,执行函数等,不会进行输出。 python交互环境也是为了方便调试,才对变量直接输出的

2023-03-01
sunny
整个课程多久能更新完毕,尹老师?

编辑回复: sunny同学你好,按正常更新节奏(每周三更新一章,共15章)2月中旬可以更新完

2022-11-17
yanyu-xin
import sys # 将浮点数或较大整数用str转为字符串,用intern驻留内存 # 较大整数 n5 = 1234567890 n6 = 1234567890 str_n5 = sys.intern(str(n5)) str_n6 = sys.intern(str(n6)) print((str_n5 is str_n6 )) # 浮点数 n7 = 1234567890.987654321 n8 = 1234567890.987654321 str_n7 = sys.intern(str(n7)) str_n8 = sys.intern(str(n8)) print((str_n7 is str_n8 ))
2023-01-05
1
孔方兄
我们按照 Python 的变量赋值原理,再来理解一下第 3 行代码 var1 = var2 ,通常人们口中说的:“将 var2 赋值给 var1”,它内部的工作原理是:将 var1 标签从当前的盒子上取下来,贴在标记着 var2 标签的盒子上。那原来的盒子会怎样呢?一旦盒子上没有了标签,就会按照 Python 默认的空间分配和回收规则,继续保留,或者扔进垃圾箱,扔进垃圾箱的过程就叫做“内存回收”。 改成 我们按照 Python 的变量赋值原理,再来理解一下第 3 行代码 var1 = var2 ,通常人们口中说的:“将 var2 赋值给 var1”,它内部的工作原理是:将var2 对应的内存值 拷贝 并 粘贴到 var1 对应的内存中。
2022-11-18
2
1
xinn
1,在交互模式下明明是False呀?怎么同用啦? 2,而且“hello!”中不是还有!吗,不是只有字母?
2022-11-16
1
李兴昌
老师,我看视频每一章最后的总结都说有思考题的答案,但是视频里面没有显示,请问是怎么回事?
2023-12-02
收起评论