test_augassign.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 262 行

PY
262
字号
# Augmented assignment test.x = 2x += 1x *= 2x **= 2x -= 8x //= 2x //= 1x %= 12x &= 2x |= 5x ^= 1print xx = [2]x[0] += 1x[0] *= 2x[0] **= 2x[0] -= 8x[0] //= 2x[0] //= 2x[0] %= 12x[0] &= 2x[0] |= 5x[0] ^= 1print xx = {0: 2}x[0] += 1x[0] *= 2x[0] **= 2x[0] -= 8x[0] //= 2x[0] //= 1x[0] %= 12x[0] &= 2x[0] |= 5x[0] ^= 1print x[0]x = [1,2]x += [3,4]x *= 2print xx = [1, 2, 3]y = xx[1:2] *= 2y[1:2] += [1]print xprint x is yclass aug_test:    def __init__(self, value):        self.val = value    def __radd__(self, val):        return self.val + val    def __add__(self, val):        return aug_test(self.val + val)class aug_test2(aug_test):    def __iadd__(self, val):        self.val = self.val + val        return selfclass aug_test3(aug_test):    def __iadd__(self, val):        return aug_test3(self.val + val)x = aug_test(1)y = xx += 10print isinstance(x, aug_test)print y is not xprint x.valx = aug_test2(2)y = xx += 10print y is xprint x.valx = aug_test3(3)y = xx += 10print isinstance(x, aug_test3)print y is not xprint x.valclass testall:    def __add__(self, val):        print "__add__ called"    def __radd__(self, val):        print "__radd__ called"    def __iadd__(self, val):        print "__iadd__ called"        return self    def __sub__(self, val):        print "__sub__ called"    def __rsub__(self, val):        print "__rsub__ called"    def __isub__(self, val):        print "__isub__ called"        return self    def __mul__(self, val):        print "__mul__ called"    def __rmul__(self, val):        print "__rmul__ called"    def __imul__(self, val):        print "__imul__ called"        return self    def __div__(self, val):        print "__div__ called"    def __rdiv__(self, val):        print "__rdiv__ called"    def __idiv__(self, val):        print "__idiv__ called"        return self    def __floordiv__(self, val):        print "__floordiv__ called"        return self    def __ifloordiv__(self, val):        print "__ifloordiv__ called"        return self    def __rfloordiv__(self, val):        print "__rfloordiv__ called"        return self    def __truediv__(self, val):        print "__truediv__ called"        return self    def __itruediv__(self, val):        print "__itruediv__ called"        return self    def __mod__(self, val):        print "__mod__ called"    def __rmod__(self, val):        print "__rmod__ called"    def __imod__(self, val):        print "__imod__ called"        return self    def __pow__(self, val):        print "__pow__ called"    def __rpow__(self, val):        print "__rpow__ called"    def __ipow__(self, val):        print "__ipow__ called"        return self    def __or__(self, val):        print "__or__ called"    def __ror__(self, val):        print "__ror__ called"    def __ior__(self, val):        print "__ior__ called"        return self    def __and__(self, val):        print "__and__ called"    def __rand__(self, val):        print "__rand__ called"    def __iand__(self, val):        print "__iand__ called"        return self    def __xor__(self, val):        print "__xor__ called"    def __rxor__(self, val):        print "__rxor__ called"    def __ixor__(self, val):        print "__ixor__ called"        return self    def __rshift__(self, val):        print "__rshift__ called"    def __rrshift__(self, val):        print "__rrshift__ called"    def __irshift__(self, val):        print "__irshift__ called"        return self    def __lshift__(self, val):        print "__lshift__ called"    def __rlshift__(self, val):        print "__rlshift__ called"    def __ilshift__(self, val):        print "__ilshift__ called"        return selfx = testall()x + 11 + xx += 1x - 11 - xx -= 1x * 11 * xx *= 1if 1/2 == 0:    x / 1    1 / x    x /= 1else:    # True division is in effect, so "/" doesn't map to __div__ etc;    # but the canned expected-output file requires that those get called.    x.__div__(1)    x.__rdiv__(1)    x.__idiv__(1)x // 11 // xx //= 1x % 11 % xx %= 1x ** 11 ** xx **= 1x | 11 | xx |= 1x & 11 & xx &= 1x ^ 11 ^ xx ^= 1x >> 11 >> xx >>= 1x << 11 << xx <<= 1

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?