#python #python-3.x #built-in
Вопрос:
Это работает без функции.
v = list(dic.values()) # V is a list.
Но если я помещу его в функцию, например:
def test(list):
result={}
for i in l:
result[i]=result.get(i,0) 1
v = result.values()
return list(v)
l=[1,2,1,1,3,3,5,5,5,5,5,3,7]
print(test(l))
это вызывает ошибку,
Traceback (most recent call last):
File `repNone.py`, line 83, in <module>
print(test(l))
File "`repNone.py`", line 81, in test
return list(v)
TypeError: 'list' object is not callable
Комментарии:
1. В функции, которую вы затеняете, называя параметр (неиспользуемый, к которому вы обращаетесь
l
как к глобальному)list
.2. Более конкретно, параметр вашей функции с именем «список» перезаписывает определение фактического типа
list
.3. Спасибо @jonrsharpe
Ответ №1:
Всегда не используйте встроенную функцию (например list
) в качестве переменных, Вы используете list
ее как переменную
В вашей функции вы передаете l
как переменную с именем list
, а затем при использовании list(v)
вы получили ошибку, потому что вы не можете вызвать переменную.
ты сделал это:
>>> def test(list):
...
... return list(v) # <- got error because here list is variable and you call this.
измените свой код следующим образом:
>>> def test(lst):
...
... return list(v)
Комментарии:
1. Отличный улов! Спасибо. @пользователь1740577