为什么装饰器return类型None?
Why does the decorator return the type None?
帮我理解为什么这个装饰器没有在 do_list() 函数中形成的列表的末尾添加值。
我得到了使用装饰器的函数的结果None
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))
提前致谢!
P.S。
我这样做是为了教育目的,为了更好地理解装饰器模式
result = func(arg).append(4)
append
不是 return 新列表。它就地修改列表。您将 result
作为 append
的 return 值,然后对它进行 return 处理,所以最后 returned 的值为 None
.
您可以将其更改为:
result = func(arg)
result.append(4)
return result
或者,在一行中:
return func(arg) + [4]
帮我理解为什么这个装饰器没有在 do_list() 函数中形成的列表的末尾添加值。
我得到了使用装饰器的函数的结果None
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))
提前致谢!
P.S。 我这样做是为了教育目的,为了更好地理解装饰器模式
result = func(arg).append(4)
append
不是 return 新列表。它就地修改列表。您将 result
作为 append
的 return 值,然后对它进行 return 处理,所以最后 returned 的值为 None
.
您可以将其更改为:
result = func(arg)
result.append(4)
return result
或者,在一行中:
return func(arg) + [4]