我是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)
但是当我运行它时,出现了以上错误。
答案 0 :(得分:0)
似乎在不需要时使用了任意参数。您可以简单地使用参数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]
有关如何使用带有函数参数的*
或**
运算符的详细指导,请参见以下文章:
答案 1 :(得分:0)
前缀**
表示,函数的所有关键字参数均应分组为名为dict
的{{1}}。因此,func
是func
,而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]