Python 不可测误差

Python 不可测误差,python,Python,嗨,我有下面的代码,并得到了这个错误:TypeError:'int'对象是不可编辑的,我想它与变量c有关 def dayInWeek(self): m = self._month, y = self._year, c = 0 ; # m - the month , _day - the day , c - the decade, y - the last 2 digit in the year if self._month == 1 or self._month == 2:

嗨,我有下面的代码,并得到了这个错误:TypeError:'int'对象是不可编辑的,我想它与变量c有关

def dayInWeek(self):
    m = self._month, y = self._year, c = 0 ; # m - the month , _day - the day , c - the decade, y - the last 2 digit in the year
    if self._month == 1 or self._month == 2:
        m = self._month + 12
        y = self._year - 1
    c = m / 100
    y = y % 100
    return (self._day + (26 * (m +1)) / 10 + y + y / 4 + c / 4 - 2 * c) % 7

不能像现在这样在同一行上声明多个变量。改变

m = self._month, y = self._year, c = 0

在大多数情况下,在同一行声明多个变量通常被认为是不好的做法


这里的错误是因为在赋值的左侧使用逗号被解释为试图将右侧的内容解构为元组。无法解构0,因为它不是iterable;这就是错误

Python确实支持多变量赋值,但不支持您的方式(这是它在C中的工作方式)

而不是

m = self._month, y = self._year, c = 0
照办

m, y, c = self._month, self._year, 0
这种形式的赋值称为

请注意,您也不需要在此处声明
c
,只需在需要的地方定义它:

def dayInWeek(self):
    d, m, y = self._day, self._month, self._year
    if m in (1, 2):
        m += 12
        y -= 1
    c = m / 100
    y %= 100
    return (d + (26 * (m +1)) / 10 + y + y / 4 + c / 4 - 2 * c) % 7

另外,保留尾随的
输出,它们在Python中不是必需的。

不需要猜测。包括完整的错误消息。它会告诉你(和我们)错误的确切位置。我建议不要这样做,因为这样会使代码更难阅读。元组赋值更适合于变量都非常密切相关或来自函数返回的情况。在我看来,至少。@Scovetta我同意它可以做到这一点,但在这里,所有部分实际上都是相关的(特别是当没有像我在后面的代码中那样包括十年时)。在我看来,用元组赋值来分配相关部分是非常可读的。
def dayInWeek(self):
    d, m, y = self._day, self._month, self._year
    if m in (1, 2):
        m += 12
        y -= 1
    c = m / 100
    y %= 100
    return (d + (26 * (m +1)) / 10 + y + y / 4 + c / 4 - 2 * c) % 7