《Python 高级编程》简要读书笔记

Python 高级编程

列表推导


li=[i for i in range(10) if i%2 == 0]
[0, 2, 4, 6, 8]

#enumerate的用法

for i,j in enumerate(range(10)):
    print (i,j)

迭代器

#yield的用法
def fabnaci():
    a,b=0,1
    while b<10:
        yield b
        a,b=b,a+b
if __name__ == '__main__':
    ites=fabnaci()
    for i in ites:
        print (i)

访问超类中的方法

class a():

    def __init__(self):
        print ("a __init__ ")


class b(a):
    def __init__(self):
        super(b, self).__init__()
        print ("b __init__")

class person():

    __slots__ = ['age']

    def __init__(self,name,age):
        self.name=name
        self.age=age

if __name__ == '__main__':
    p=person("libai",'100')#AttributeError: 'person' object has no attribute 'name'
    print(p.name) #AttributeError: 'person' object has no attribute 'name'


class person():

    __slots__ = ['age']

    def __init__(self,age):
        self.age=age

if __name__ == '__main__':
    p=person('100')
    print(p.age)
    

元编程


class gj(object):
    #必须返回一个实例
    def __new__(cls, *args, **kwargs):
        print("__new__ called")
        return  object.__new__(cls)

    def __init__(self):
        print ("__init__ called")


if __name__ == '__main__':
    gj()

Python中命名风格

CamelCase(每个单词首字母大写)
mixedCase(和CamelCase类似,第一个单词首字母小写)
UPPERCASE(大写)ER_CASE_WITH_UNDEGSCORES(大写并且带下划线)
lowercase(小写)和lower_case_with_underscores(小写且带下划线)
前缀和后缀下划线,前后最下划线用来标记私有和特殊的元素

命名指南

使用is和has前缀命名布尔元素
用复数形式命名序列元素
用显式的名称命名字典
避免通用名称
避免现有名称

PS:后续再加

posted @ 2020-08-11 15:56  浮尘~若梦  阅读(107)  评论(0编辑  收藏  举报