81、求打印結果
arr = [1,2,3]
def bar():
arr+=[5]
bar()
print(arr)
'''
A. error
B. [5]
C. [1,2,3]
D. [1,2,3,5]
'''
# 答案
A
82、請給出下面代碼片段的輸出
def say_hi(func):
def wrapper(*args, **kwargs):
print("HI")
ret = func(*args, **kwargs)
print("BYE")
return re
return wrapper
def say_yo(func):
def wrapper(*args, **kwargs):
print("YO")
return func(*args, **kwargs)
return wrapper
@say_hi
@say_yo
def func():
print("ROCK & ROLL")
func()
# 答案
'''
HI
YO
ROCK & ROLL
BYE
'''
83、map(str,[1,2,3,4,5,6,7,8,9]) 輸出是什么?
print(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) # <map object at 0x101f59748>
# 答案
'''
Python裝飾器(decorator)在實現的時候,有一些細節需要被注意。例如,被裝飾后的函數其實已經是另外一個函數了(函數名等函數屬性會發生改變)。這樣有時候會對程序造成一些不便,例如筆者想對flask框架中的一些函數添加自定義的decorator,添加后由於函數名和函數的doc發生了改變,對測試結果有一些影響。
所以,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用。寫一個decorator的時候,最好在實現之前加上functools的wrap,它能保留原有函數的名稱和docstring。
'''
85、請給出下面代碼片段的輸出
def test():
try:
raise ValueError("something wrong")
except ValueError as e:
print("Error occurred")
return
finally:
print("Done")
test()
# 答案
Error occurred
Done