本笔记完全基于David Beazley的Python教程-Practical Python.
Dictionaries Revisited (Object Implementation)
Python的对象在系统底层很大依赖于字典构建.换言之,Python对象本质上存放在一个字典里.
在模块内部,字典会存放模块中所有的全局变量和函数.
本笔记完全基于David Beazley的Python教程-Practical Python.
Python的对象在系统底层很大依赖于字典构建.换言之,Python对象本质上存放在一个字典里.
在模块内部,字典会存放模块中所有的全局变量和函数.
本笔记完全基于David Beazley的Python教程-Practical Python.
类可以定义特殊方法,这些方法对于Python是具有特殊含义的.他们一般在开头和结尾都会用__,例如我们前面常用的__init__初始化函数.在此,我们只关注几个例子,作为范例.
本笔记完全基于David Beazley的Python教程-Practical Python.
面向对象编程(Object Oriented Programming)指将代码用对象组合的方式拆分.其中对象中包含数据(属性)和行为(应用在对象的方法).Python提供了class语句用来定义新对象,
1 | class Point: |
这里Python作为动态语言,与C++最为不同的一点是,Python的类属性可以在程序运行中随意添加,但是很不推荐这么做,会让程序显得十分杂乱.
本笔记完全基于David Beazley的Python教程-Practical Python.
模块可以认为是命名值的集合,换言之,模块其实和C++中的命名空间十分类似.模块中包含模块文件中定义的全局变量和定义的函数.当我们导入模块之后,如果需要调用模块中的命名值,只需要将模块名作为前缀调用即可. 在不同的模块中,是允许存在有相同名称的全局变量或函数的,对其调用如下所示
本笔记完全基于David Beazley的Python教程-Practical Python.
Python的编程风格更推荐于使用由下向上的代码编写风格. 我们将函数视作程序的构建块,从较小的,较简单的函数开始编写,后面的函数将在先前函数的基础之上继续编写.
在理想情况下,函数只对向函数输入的变量进行操作,避免对全局变量和未知的变量值变化带来的副作用.因此,构建函数的目的是模块化和可预测性.模块化是用来封装程序进程,从而利于程序编写和后期维护;可预测性,是为了避免函数造成一些未知的影响.
本笔记完全基于David Beazley的Python教程-Practical Python.
Python的赋值并非赋实际值,而是创建并赋值引用副本.
1 | a=[1,2,3] |
这里我们设计了三个变量,但其实底层只有一个列表对象[1,2,3],有四个不同的引用指向他,如果我们修改其中任意一个量,都会导致所有引用的值变化.
本笔记完全基于David Beazley的Python教程-Practical Python.
collection模块提供了一些用于数据处理的对象.如Counter计数器,defaultdict和deque等.在此我们只介绍这三个对象.
Counter其实是字典的一个子类,他与普通的字典的区别在于,他的键为待计数的元素,他的值为计数值或其余相关的数据;因此他的值虽然是计数值,但实际上是允许出现0或者负值的.此外,如果我们在字典中查找一个不存在的键,那么会返回一个KeyError异常,而如果对于Counter类查找一个不存在的键,他并不会报错,并且返回0,同时创建一个新键值对,计数值设为0.
本笔记完全基于David Beazley的Python教程-Practical Python.
Python中提供了存储多个对象的容器,主要为列表,字典或集合.列表一般用于存储有序数据;字典则是用于存储无需数据;集合则是与字典类似,但其用于存储无序且不允许重复元素的数据.
我们先介绍集合的概念,其的赋值方式和字典十分类似,但是不同的是他只存储元素值,而字典存储键值对.
1 | s={'IBM','GOOG'} # 集合赋值 |
本笔记完全基于David Beazley的Python教程-Practical Python.
None类型: None可选或缺失值的占位符.在条件语句中,认为是False.
元组指的是一组值的组合,其利用如下的方式声明,
1 | s=('GOOG',100,49.1) |