У меня есть фрагмент кода следующим образом:
def range_print(n, *args):
for i in range(n):
func(i)
@range_print(n=10)
def func(i):
print(i)
Я получаю:
TypeError Traceback (most recent call last)
<ipython-input-4-b13e44263521> in <module>
2 for i in range(n):
3 func(i)
----> 4 @range_print(n=10)
5 def func(i):
6 print(i)
<ipython-input-4-b13e44263521> in range_print(n, *args)
1 def range_print(n, *args):
2 for i in range(n):
----> 3 func(i)
4 @range_print(n=10)
5 def func(i):
TypeError: 'NoneType' object is not callable
Позже я решил проблему, но я не знаю, есть ли лучший путь? Я хочу использовать декораторы, чтобы мой код выглядел чище.
def range_print(n, *args):
def inner(func): # <----Why do I need this def to load func?
for i in range(n):
func(i)
return inner
@range_print(n=10)
def func(i):
print(i)