0%

Multiple Inheritance and MRO

继承是面向对象编程中用于建立类型层次关系的机制.子类(subclass)继承父类(superclass)的属性和方法;子类对象可以被当做父类对象使用.

1
2
class Parent: pass
class Child(Parent): pass

其在程序设计中的作用:代码复用;抽象公共接口;建立类型约束.

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Introducing Classes

面向对象编程(Object Oriented Programming)指将代码用对象组合的方式拆分.其中对象中包含数据(属性)和行为(应用在对象的方法).Python提供了class语句用来定义新对象,

1
2
3
4
5
6
7
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
def move(self,dx,dy):
self.x+=dx
self.y+=dy

这里Python作为动态语言,与C++最为不同的一点是,Python的类属性可以在程序运行中随意添加,但是很不推荐这么做,会让程序显得十分杂乱.

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Modules

模块可以认为是命名值的集合,换言之,模块其实和C++中的命名空间十分类似.模块中包含模块文件中定义的全局变量和定义的函数.当我们导入模块之后,如果需要调用模块中的命名值,只需要将模块名作为前缀调用即可. 在不同的模块中,是允许存在有相同名称的全局变量或函数的,对其调用如下所示

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Functions and Script Writing

Python的编程风格更推荐于使用由下向上的代码编写风格. 我们将函数视作程序的构建块,从较小的,较简单的函数开始编写,后面的函数将在先前函数的基础之上继续编写.

在理想情况下,函数只对向函数输入的变量进行操作,避免对全局变量和未知的变量值变化带来的副作用.因此,构建函数的目的是模块化和可预测性.模块化是用来封装程序进程,从而利于程序编写和后期维护;可预测性,是为了避免函数造成一些未知的影响.

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Objects

Python的赋值并非赋实际值,而是创建并赋值引用副本.

1
2
3
a=[1,2,3]
b=a
c=[a,b]

这里我们设计了三个变量,但其实底层只有一个列表对象[1,2,3],有四个不同的引用指向他,如果我们修改其中任意一个量,都会导致所有引用的值变化.

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Collection module

collection模块提供了一些用于数据处理的对象.如Counter计数器,defaultdict和deque等.在此我们只介绍这三个对象.

Counter其实是字典的一个子类,他与普通的字典的区别在于,他的键为待计数的元素,他的值为计数值或其余相关的数据;因此他的值虽然是计数值,但实际上是允许出现0或者负值的.此外,如果我们在字典中查找一个不存在的键,那么会返回一个KeyError异常,而如果对于Counter类查找一个不存在的键,他并不会报错,并且返回0,同时创建一个新键值对,计数值设为0.

阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Container

Python中提供了存储多个对象的容器,主要为列表,字典或集合.列表一般用于存储有序数据;字典则是用于存储无需数据;集合则是与字典类似,但其用于存储无序且不允许重复元素的数据.

我们先介绍集合的概念,其的赋值方式和字典十分类似,但是不同的是他只存储元素值,而字典存储键值对.

1
2
s={'IBM','GOOG'} # 集合赋值
d={'IBM':90.1,'GOOG':23.12} # 字典赋值
阅读全文 »

本笔记完全基于David Beazley的Python教程-Practical Python.

Datatypes and Data structures

None类型: None可选或缺失值的占位符.在条件语句中,认为是False.

元组指的是一组值的组合,其利用如下的方式声明,

1
2
s=('GOOG',100,49.1)
s='GOOG',100,49.1
阅读全文 »