Первый вызов example работает, но затем во второй раз я получаю ошибку типа:
Traceback (most recent call last): File "test.py", line 7, in <module> example(2) File "test.py", line 3, in example str = str(parameter) TypeError: 'str'objectisnotcallable
Вы переопределяете, что str() означает. str это встроенное в Python имя строкового типа, и вы не хотите его менять.
Используйте другое имя для локальной переменной и удалите оператор global.
Обратите внимание, что если вы использовали подобный код в Python REPL, то присвоение глобальному str будет сохраняться до тех пор, пока вы с этим что-то не сделаете. Вы можете перезапустить интерпретатор, или del str. Последнее работает, потому что str это не на самом деле определенная глобальная переменная по умолчанию - вместо этого она обычно находится в резервном варианте (builtins стандартный библиотечный модуль, который специально импортируется при запуске и получает глобальное имя __builtins__).
Ответ 2
Хотя ее и нет в вашем коде, другая трудноопределимая ошибка заключается в том, что % символ отсутствует при попытке форматирования строки:
"foo %s bar %s coffee"("blah","asdf")
но это должно быть:
"foo %s bar %s coffee"%("blah","asdf")
Отсутствие % приведет к тому же TypeError: 'str' object is not callable.
Ответ 3
В моем случае у меня был класс, в котором были метод и строковое свойство с тем же именем, я пытался вызвать метод, но получал строковое свойство.
Ответ 4
Обратите внимание, что TypeError: 'str' object is not callable означает только попытку вызвать (т. Е. Использовать синтаксис вызова функции) строку (т.Е. Любое имя, которому ранее была присвоена строка). Использование любого другого встроенного метода в качестве имени переменной может вызвать точно такое же сообщение об ошибке.