python学习-3

  • enumerate()函数:用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中

  • sorted()函数:对所有可迭代的对象进行排序操作(链接内含sort()函数与sorted()函数区别)

  • lower()函数:将字符串中所有字母进行小写操作,(不能对其他类型数据进行操作,会报错)

  • items()函数:以列表返回可遍历的(键,值)元组数组,(xxx.items())


lambda : 匿名函数

装饰器(Decorator)是通过python的@语法实现的

OOP(Object Oriented Programming):面向对象的编程,是一种程序设计思想

  • 数据封装、继承和多态只是面向对象程序设计中最基础的3个概念

Python允许使用多重继承,因此,MixIn 就是一种常见的设计

如果想将一个类用作for … in循环,类似list或tuple,那么必须有一个__iter__()方法来返回一个迭代对象,但是要注意他就是一个类,当然经过实验发现你通过类建立实例也可以等价的做for循环,注意__iter__要配合__next__使用

我们自己定义的类表现得和Python自带的list、tuple、dict没什么区别,这完全归功于动态语言的“鸭子类型”,不需要强制继承某个接口。

__call__()还可以定义参数。对实例进行直接调用就好比对一个函数进行调用一样,所以你完全可以把对象看成函数,把函数看成对象,因为这两者之间本来就没啥根本的区别

通过callable()函数,我们就可以判断一个对象是否是“可调用”对象。

Python的class允许定义许多定制方法,可以让我们非常方便地生成特定的类。

本节介绍的是最常用的几个定制方法,还有很多可定制的方法,请参考Python的官方文档


借用一个例子深刻理解__str____repr____getattr____call__

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
输出个性化URL:
class Chain(object):
def __init__(self, path=''):
self.__path = path

def __getattr__(self, path):
return Chain('%s/%s' % (self.__path, path))

def __call__(self, path):
return Chain('%s/%s' % (self.__path, path))

def __str__(self):
return self.__path

__repr__ = __str__

print(Chain().users('michael').repos) # /users/michael/repos

python的枚举类型

正常情况下,我们都用class Xxx...来定义类,但是,type()函数也允许我们动态创建出类来

#

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×