8)新式的8进制字面量,相应地修改了oct()函数。2.x这样:
>>> 0666 438 >>> oct(438) '0666'
3.0这样:
>>> 0666 SyntaxError: invalid token (, line 1) >>> 0o666 438 >>> oct(438) '0o666'
9)增加了2进制字面量和bin()函数:
>>> bin(438) '0b110110110' >>> _438 = '0b110110110' >>> _438 '0b110110110'
10)扩展的可迭代解包。在Py3.0里,a, b, *rest = seq 和 *rest, a = seq都是合法的,只要求两点:rest是list对象和seq是可迭代的。
11)新的super(),可以不再给super()传参数,
>>> class C(object): def __init__(self, a): print('C', a) >>> class D(C): def __init(self, a): super().__init__(a) # 无参数调用super() >>> D(8) C 8 <__main__.D object at 0x00D7ED90> 12) 新的metaclass语法: class Foo(*bases, **kwds): pass
13)支持class decorator。用法与函数decorator一样:
>>> def foo(cls_a): def print_func(self): print('Hello, world!') cls_a.print = print_func return cls_a >>> @foo class C(object): pass >>> C().print() Hello, world!
class decorator可以用来玩玩狸猫换太子的大把戏。
(编辑:aniston)
|