帮助我理解为什么这个装饰器没有在 do_list() 函数中形成的列表末尾添加值。
我得到了与装饰器一起工作的函数的结果无
def dec_do_list(func):
def wrapper(arg: int):
result = func(arg).append(4)
return result
return wrapper
@dec_do_list
def do_list(arg: int):
import random
result = []
for i in range(arg):
result.append(random.random())
return result
print(do_list(4))
先谢谢你!
附言 我这样做是出于教育目的,以便更好地理解装饰器模式
答案 0 :(得分:1)
result = func(arg).append(4)
append
不会返回新列表。它就地修改列表。您将获得 result
作为 append
的返回值,然后返回它,因此最后返回的值为 None
。
您可以将其更改为:
result = func(arg)
result.append(4)
return result
或者,在一行中:
return func(arg) + [4]