71、请实现一个装饰器,通过一次调用使函数重复执行5次。
# 答案
def again_func(func):
def inner(*args, **kwargs):
for line in range(5):
func(*args, **kwargs)
return inner
@again_func
def func1():
print('from func1...')
func1()
72、python 一行 print 出 1~100 偶数的列表, (列表推导式, filter 均可)
# 答案
print([i for i in range(1, 101) if i % 2 == 0])
print(list(filter(lambda x: x % 2 == 0, range(1, 101))))
73、解释生成器与函数的不同,并实现和简单使用generator
# 答案
'''
生成器和函数的主要区别在于函数return avalue,生成器yield a value,同事标记或记忆point of the yield 以便在下次调用时从标记点恢复执行,yield使用函数转换成生成器,而生成器反过来有返回迭代器。
'''
74、请写出打印结果:
# 例 1
def func(a,b=[]):
b.append(a)
print(b)
func(1)
func(1)
func(1)
func(1)
# 例 2
def func(a,b={}):
b[a] = 'v'
print(b)
func(1)
func(2)
# 答案:
'''
例1:
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
例2:
{1: 'v'}
{1: 'v', 2: 'v'}
'''
75、简述yield和yieldfrom关键字。
# 答案:
'''
yield:
当一个函数中出现yield关键字的时候,那么这个函数就是一个生成器。可以用for循环或者next()函数来迭代。
yield from:
简单地说,yield from generator 。实际上就是返回另外一个生成器
''