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 。實際上就是返回另外一個生成器
''