Если вы просто хотите, чтобы все аргументы функции были преобразованы в np.array
, очень полезно использовать декоратор.
import numpy as np
def np_decorator(func):
def wrapper(*args, **kwargs):
# silently convert arguments to np.array
new_args = [np.array(x) for x in args]
new_kwargs = {k: np.array(v) for k,v in kwargs.items()}
# actual execution when called
func(*new_args, **new_kwargs)
return wrapper
@np_decorator
def test_func(a, b):
print(type(a), type(b))
test_func([2], [5])
# <class 'numpy.ndarray'> <class 'numpy.ndarray'>
Хотя я думаю, что иногда вам не нужно преобразовывать все аргументы.Вы можете настроить декоратор в соответствии с вашими потребностями.Например, конвертировать *args
только, но оставляет **kwargs
нетронутым.