enumerate()
seq = ['a','b','c','d']
i = 0
#普通的for循环
for element in seq:
print(element)
i= i+1
#用enumerate的for循环
for i,element in enumerate(seq):
print(element)
说白了就是用enumerate可以自动带索引号。
再如:
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
> [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
语法:
enumerate(sequence, [start=0])
sequence – 一个序列、迭代器或其他支持迭代对象。
start – 下标起始位置
call()
python中一切皆对象,而函数属于可调用对象。是否是可调用对象,可以用callable来判断。
将一个普通的类变成可调用的方法是,加一个call函数即可。
如:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print ("My name is {}".format(self.name))
print ('My friend is {}'.format( friend))
person = Person("xiaoliu","male")
person("xiaogao") #此时自动调用了__call__函数
> My name is xiaoliu
> My friend is xiaogao