在一个解释器而不是另一个解释器中获取TypeError(元组分配)

时间:2018-09-14 00:02:19

标签: python-3.x ubuntu pycharm tuples ubuntu-16.04

我遇到了一个无法解释的奇怪问题。我有一些代码是在笔记本电脑上用PyCharms编写的,并且已经对其进行了彻底的测试(我认为)。我现在已迁移到Ubuntu环境,设置了我的virtualenv,安装了我的模块,并开始了测试...

在PyCharms和Ubuntu中进行相同的测试,我得到两个无法解释的单独结果。我需要Ubuntu版本才能工作,但是当PyCharms和那里的解释器一直都不在乎时,看不到为什么它不喜欢我的Tuple作业。

Ubuntu环境:使用Python 3.6.5 Windows 10环境:使用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 :(得分:1)

您不能将项目分配给元组,但是可以追加到元组。元组是不可变的。

有关元组的更多详细信息,请参见Python Documentation。对于您的用例,似乎@Entity class SellingItem: GoodCount { @Id @GeneratedValue(generator = "UUID") @GenericGenerator( name = "UUID", strategy = "org.hibernate.id.UUIDGenerator" ) lateinit var id: UUID @ManyToOne var good: Good? = null ... } 是更好的数据类型。