python中的TypeError,它说字典对象不可调用

时间:2018-06-29 11:05:04

标签: python typeerror keyword-argument

我是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 个答案:

答案 0 :(得分:0)

似乎在不需要时使用了任意参数。您可以简单地使用参数arg1func定义函数:

def new_map(arg1, func):
    result = []
    for x in arg1:
        result.append(func(x))
    return result

res = new_map([-10], abs)

print(res)

[10]

有关如何使用带有函数参数的***运算符的详细指导,请参见以下文章:

答案 1 :(得分:0)

前缀**表示,函数的所有关键字参数均应分组为名为dict的{​​{1}}。因此,funcfunc,而dict是尝试调用func(x)的尝试,但由于给出的错误而失败。

答案 2 :(得分:0)

已经误用了词典。当您定义new_map(*arg1, **func)时,func变量将收集函数调用期间给定的命名参数。如果应该将func作为函数,则将其作为第一个参数,不要包含***

答案 3 :(得分:0)

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

答案 4 :(得分:0)

或简单的列表理解:

def new_map(arg1, func):
    return [func(i) for i in arg1]

out = new_map([-10], func=abs)
print(out)

输出:

[10]