Получение TypeError (присваивание кортежа) в одном интерпретаторе, а не в другом - PullRequest
0 голосов
/ 14 сентября 2018

У меня странная проблема, которую я не могу объяснить.У меня есть некоторый код, который я написал в PyCharms на своем ноутбуке, и довольно тщательно его протестировал (подумал я).Теперь я перешел на среду Ubuntu, настроил virtualenv, установил модули и начал тестирование ...

С помощью одного и того же теста в PyCharms и Ubuntu я получаю два отдельных результата, которые я не могу объяснить.Мне нужна версия Ubuntu для работы, но я не понимаю, почему ей не нравятся мои назначения Tuple, когда PyCharms и интерпретатор там все это время не заботились.

Среда Ubuntu: использование Python 3.6.5 Windows10 среда: использование Python 3.6.5 (через загрузку Python)

Мой сценарий не работает здесь:

if something[7] is None:
    something[7] = "N/A"

Ошибка в Ubuntu:

[2018-09-13 19:49:28,706] ERROR [__main__.main:445] Problem occurred. Please see log!
  Traceback (most recent call last):
    File "script.py", line 320, in main
      something[7] = "N/A"
TypeError: 'tuple' object does not support item assignment

Вот фактическаякортеж, который интерпретатор PyCharm изменяет без проблем.Я могу видеть это в моей отладке:

('Val', 'Val', 'Val', 'Val', 'Val', 'Val', 'Val', 'N/A', 'Val', None, None, None, None, None, None)

Есть идеи?

1 Ответ

0 голосов
/ 15 сентября 2018

Вы не можете назначить элемент для кортежей, однако вы можете добавить к кортежам. Кортежи неизменны.

Подробнее о кортежах см. В документации Python . Для вашего случая использования, похоже, list будет лучшим типом данных.

...