Effective python 阅读笔记

159 阅读1分钟

第一章

p4

PEP8编码风格

1.类方法:通常情况下,类方法的使用通过@classmethod装饰器来声明。

class ClassA(object):
    @classmethod
    def func_a(cls):
        print(type(cls), cls)
if __name__ == '__main__':
    ClassA.func_a()
    ca = ClassA()
    ca.func_a()

运行结果:

<class 'type'> <class 'main.ClassA'>

<class 'type'> <class 'main.ClassA'>

2.检测长度:不要通过检查长度的方法判断somelist是否为空,应该采用 if somelist空值会自动判断为False,非空则是True.

3.受保护的实例属性,应以单个下划线开头;私有的实例属性,应以两个下划线开头

p8

%r 和 %s 的区别

text ="I am %d years old." %22
print(I said: %s." % text )
print(I said: %r." % text)

运行结果:

I said: I am22 years old.

I said:'I am 22 years old.'. // %r 给字符串加了单引号

另外,%r打印时能够重现它所代表的对象

import datetime 
d = datetime.date.today() 
print("%s" % d)
print("%r" % d)

运行结果:

2018-10-31

datetime.date(2018,10,31) //%r打印时能够重现它所代表的对象

p20

尽量用enumerate取代range

enumerate 函数在遍历迭代器时获知每个元素的索引。

enumerate 的参数:

第一个参数是遍历的对象,第二个参数是开始计数时的初始值(默认为0)。

举例:

flavor_list = ['skating','mygirlfriend','boastduck']
for i,favor in enumerate(favor_list,1):
    print('%d: %s'%(i,flavor))

result:

1: vanilla

2: chocolate

3: pecan

4: strawberry