基础
- 就目前而言, 应使用小写的Python变量名。 在变量名中使用大写字母虽然不会导致错误, 但避免使用大写字母是个不错的主意。
- 如果你要从列表中删除一个元素, 且不再以任何方式使用它, 就使用del 语句; 如果你要在删除元素后还能继续使用它, 就使用方法pop()。 你不知道要从列表中删除的值所处的位置。 如果你只知道要删除的元素的值, 可使用方法remove() 。方法remove() 只删除第一个指定的值。
- sort()方法将永久的改变列表元素的排序。sort函数中加入参数,改变排序的正反。
- sorted()函数临时性改变列表元素的排序。
- 每当需要访问最后一个列表元素时, 都可使用索引-1 。 这在任何情况下都行之有效, 即便你最后一次访问列表后, 其长度发生了变化。
- python的切片用于处理部分元素,例如:list[8:]表示从下标是8的元素到最后的一个元素,输出名单上的最后三名队员, 可使用切片players[-3:] 。
- 切片可以用于复制,这个复制是深度复制,是创建一个新的,而不是指向原来的。
- 很多Python程序员都建议每行不超过80字符。PEP 8还建议注释的行长都不超过72字符。
- 要判断特定的值是否已包含在列表中, 可使用关键字in 。
- if-elif-else 结构
- 键—值对的排列顺序与添加顺序不同。 Python不关心键—值对的添加顺序
- 传递任意数量的实参: def make_pizza(*toppings) 星号让Python创建一个名为toppings 的空元组, 并将收到的所有值都封装到这个元组中。def build_profile(first, last, **user_info):两个星号让Python创建一个名为user_info的空字典, 并将收到的所有名称—值对都封装到这个字典中。
- Python不能直接将包含小数点的字符串’1127437398.85751’ 转换为整数,先将字符串转换为浮点数, 再将浮点数转换为整数。
类知识
- __init__()是初始化方法
- 类名应采用驼峰命名法 , 即将类名中的每个单词的首字母都大写, 而不使用下划线。实例名和模块名都采用小写格式, 并在单词之间加上下划线。
- 类中的方法的第一个参数都是self,它是一个指向实例本身的引用
- 定义子类时, 必须在括号内指定父类的名称。 方法__init__() 接受创建父类实例所需的信息
- try-except-else 代码块的工作原理大致如下: Python尝试执行try 代码块中的码; 只有可能引发异常的代码才需要放在try 语句中。 有时候, 有一些仅在try 代块成功执行时才需要运行的代码; 这些代码应放在else 代码块中。 except 代码块诉Python, 如果它尝试运行try 代码块中的代码时引发了指定的异常, 该怎么办。
- 类的变量名以__开头,变量就是私有的,外部无法访问。
- 有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
- 动态语言的鸭子类型(并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子)特点决定了继承不像静态语言那样是必须的。
- 实例属性属于各个实例所有,互不干扰;类属性属于类所有,所有实例共享一个属性;不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。
- MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。
绘图
最流行的工具之一是matplotlib, 它是一个数学绘图库, 我们将使用它来制作简单的图表, 如折线图和散点图。
Pygal包, 它专注于生成适合在数字设备上显示的图表。 通过使用Pygal, 可在用户与图表交互时突出元素以及调整其大小, 还可轻松地调整整个图表的尺寸, 使其适合在微型智能手表或巨型显示器上显示。
#编程注意点
def add_end(L=[]):
L.append('END')
return L
多次调用结果:
add_end()
['END']
add_end()
['END', 'END']
定义默认参数要牢记一点:默认参数必须指向不变对象!
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
- 凡是可作用于for循环的对象都是Iterable类型;
- 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
- 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
在代码运行期间动态增加功能的方式,称之为装饰器(Decorator)。