TypeError в Python, который говорит, что объект dict не вызывается
Я новичок в Python. Я получаю ошибку TypeError:dict object is not callable
, Я нигде не использовал словарь в моем коде.
def new_map(*arg1, **func):
result = []
for x in arg1:
result.append(func(x))
return result
Я попытался вызвать эту функцию следующим образом:
new_map([-10], func=abs)
Но когда я запускаю его, я получаю вышеуказанную ошибку.
5 ответов
Похоже, вы используете произвольные аргументы, когда они не требуются. Вы можете просто определить свою функцию с аргументами arg1
а также func
:
def new_map(arg1, func):
result = []
for x in arg1:
result.append(func(x))
return result
res = new_map([-10], abs)
print(res)
[10]
Для подробного руководства о том, как использовать *
или же **
операторы с аргументами функции смотрите в следующих постах:
**
Префикс говорит, что все ключевые аргументы вашей функции должны быть сгруппированы в dict
называется func
, Так func
это dict
а также func(x)
это попытка вызвать dict
и терпит неудачу с данной ошибкой.
Или простое понимание списка:
def new_map(arg1, func):
return [func(i) for i in arg1]
out = new_map([-10], func=abs)
print(out)
Выход:
[10]
func
это dictionary
в вашей программе. Если вы хотите получить доступ к его значению, вы должны использовать []
не ()
, Подобно:
def new_map(*arg1, **func):
result = []
for x in arg1:
result.append(func[x]) #use [], not ()
return result
Если func
это function
в свою программу вы должны написать:
def new_map(*arg1, func):
result = []
for x in arg1:
result.append(func(x)) #use [], not ()
return result
Вы использовали словарь по ошибке. Когда вы определили new_map(*arg1, **func)
, func
переменная собирает именованный параметр, указанный во время вызова функции. Если func
должна быть функцией, поставьте ее в качестве первого аргумента, без *
или же **