展开全部
因为解释器先检查2113语法, 再检查语义
这两行代码里5261, $=是语法错误, python没有这个语法
SyntaxError: invalid syntax 就是告诉你4102, 语法错误
但是%=是存在的, 是可以1653使用的正规语法
比如x = 5; x %= 2
x会变成1
但是你的my不是一个先定义过的变量, 不能使用%=
NameError: name 'my' is not defined 是说'my'没有被定义过, python无法在环境中找到'my'这个名字
所有的X= (+=, -=. *=....)都需要用在先定义过的变量上>>> x = "abc %s def"
>>> x %= "xyz"
>>> x
'abc xyz def'
最后, 如果你在不支持某个运算符的变量上调用那个运算符>>> class A:
pass
>>> a = A()
>>> a %= 1
会得到如下,
Traceback (most recent call last):
File "", line 1, in
a %= 1
TypeError: unsupported operand type(s) for %=: 'instance' and 'int'
如何给你自己的类正确定义运算符?>>> class A(object):
i = 1
def __add__(self, x):
y = A()
y.i = self.i + x.i
return y
>>> a = A()
>>> b = A()
>>> a + b
<__main__.A object at 0x0000000002D98F98>
>>> x = a + b
>>> x.i
2
>>> x += A()
>>> x
<__main__.A object at 0x0000000002DA0080>
>>> x.i
3