From 3d9f4a9ef7bbc5256293944446a29df295255e4a Mon Sep 17 00:00:00 2001 From: wangdepin Date: Mon, 28 Dec 2020 12:14:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E8=8A=82=E7=AC=94?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chapter/1_python_type_introduction.md | 88 +-------------------------- 1 file changed, 1 insertion(+), 87 deletions(-) diff --git a/chapter/1_python_type_introduction.md b/chapter/1_python_type_introduction.md index d0290a9..eb28e89 100644 --- a/chapter/1_python_type_introduction.md +++ b/chapter/1_python_type_introduction.md @@ -1,88 +1,2 @@ - -# Python 的动态类型介绍 +# 王德品的笔记 -1.在Python中没有变量的声明以及变量的类型: - -* 变量的类型实在运行过程中自动决定的,而不是通过声明来决定的 -* 变量首次赋值时,创建它。之后的再次赋值会改变该变量的值 - -2.类型的概念是存在于对象中而不是变量名中。变量名是通用的,它只是在特定时刻引用某个特定的对象而已。 - -* 当变量出现在表达式中时,它会马上被当前引用的对象所代替 -* 任何变量名在使用前必须明确地赋值。用未赋值的变量会产生错误。 - -> 在Python内部,变量实际上是指向对象内存空间的一个指针 - -~~~mermaid -graph LR -id1(变量名)-->|引用|id2(对象); -style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5; -~~~ -3.每个表达式生成的结果,python都创建了一个新的对象去表示这个值 - -4.Python对象缓存了不变的对象并对其进行复用,如小整数和小字符串。但是逻辑上看,每个表达式的结果值都是不同的对象,占用不同的内存。 - -5.每个对象都有两个标准的头部信息: - -* 类型标志符:标识了该对象的类型(见第10条) -* 引用计数器:决定了是否可以回收这个对象(见第8条) - >引用计数器记录了当前指向该对象的引用的数目。一旦它为0, - 则该对象的内存空间就会自动回收 - -6.给一个变量赋新值,并不是替换原始的对象,而是让这个变量去引用完全不同的一个对象。 - -7.多个变量名引用同一个对象时,称为共享引用: - -~~~mermaid -graph LR -id1(变量a) -->|引用|id2(对象) -id3(变量b) -->|引用|id2(对象) -style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5; -~~~ - -* 在共享引用中,对象的原地修改操作会影响到所有的引用该对象的变量 -* 共享引用的多个变量之间,`is`比较的结果为`True` - >`==`操作符比较的是两个变量引用的对象是否具有相同的值 - - >`is`操作符比较的是两个变量是否引用的是同一个对象 - -8.`sys`模块的`getrefcount`函数会返回对象的引用次数,如: -![getrefcount()运行结果](../imgs/python_1_1.JPG ) - -> 这里可以看到Python对象缓存了不变的对象并对其进行复用 - -9.动态类型是Python多态的基础,因为没有类型约束。Python的多态是`x.method`的方法运行时,`method`的意义取决于`x`的类型,**属性总是在运行期解析**。 - -10.查看对象的类型用`type()`函数,如: -![type()运行结果](../imgs/python_1_2.JPG ) - -11.Python提供了几种方法来查看对象的属性以及详细信息: - -* dir(x):查看x所指对象的属性 -* help(x.attr):查看x所指对象的attr属性 -* help(x):查看x所指对象的详细信息 -![dir、help运行结果](../imgs/python_1_3.JPG ) - -12.`None`对象是一个特殊的Python对象,它总是`False`,一般用于占位。它有一块内存,是一个真正的对象。它不代表未定义,事实上它有定义。 - -* `None`是所有函数和方法的默认返回值 -![type(None)](../imgs/python_1_4.JPG ) - -13.Python中,任何东西都是对象类型(见第10条),类型本身也是对象类型: - -* `type(x)`返回变量`x`指向对象的类型 -* `isinstance(x,typename)`用于测试`x`所指对象是否是`typename`类型 -* 调用类型名是对这些对象构造函数的调用,而不仅仅是类型转换 - ![任何东西都是对象类型](../imgs/python_1_5.JPG ) - -14.基本上在代码中进行类型检查是错误的,着破坏了代码的灵活性,限制了代码的类型。Python代码不关心特定的数据类型,只关心接口,这就是Python的多态设计 - -* 一个操作的意义取决于被操作对象的类型。同样的操作对不同的对象来说意义可能不同,前提是该对象支持该操作 -* 若对象不支持某种操作,则Python会在运行时检测到错误并自动抛出一个异常 - -15.Python可以在旧版本中开启新版本的特性,只需用在模块文件中使用: - `from __future__ import 特性名` \ No newline at end of file From 38bca5137fb20147bd15e82a5d1689d1d0fc2e11 Mon Sep 17 00:00:00 2001 From: wangdepin Date: Mon, 28 Dec 2020 12:19:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AC=94=E8=AE=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/README.md b/README.md index 4730162..1765c50 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,5 @@ # python 学习笔记 - -本文档是《learning python》中文第四版的学习笔记,是由我个人做的纸质读书笔记而来。 - -另:本人搜集了个人笔记并整理成册,命名为《AI算法工程师手册》,详见:www.huaxiaozhuan.com - ->* 文档PDF版本可能会滞后于项目进度 ->* 纸质笔记可以从百度网盘下载:http://pan.baidu.com/s/1miEkaBu ->* 个人所作的所有笔记也可以从百度网盘下载:http://pan.baidu.com/s/1boSzlx1 - - ![文档截图](imgs/picture_all.JPG) +说明:本笔记克隆自华校专。我想根据他的笔记模板,完成自己的python笔记。 # 目标 这份笔记的目标是为了给出一份比较精炼,但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单,但是措辞比较罗嗦,而且一个语法点往往散落在多个章节,不方便读者总结。 @@ -72,9 +59,7 @@ >`cutemarked`原版需要联网下载所需要的脚本文件,但是由于国内的网络问题,以及存在断网情况下使用等特殊需求 >,我将它改造成了一个无需联网的本地化版本 - **本文档仅用于个人学习目的,未经许可不得用于商业目的,转载请注明出处** - **email: huaxz1986@163.com**