作为一名老司机,罗列下几个注意点,纪念下匆匆岁月。
- print 不再是语句,而是函数
print("Hello, World!")
大家第一印象,告诫着我们 3.x 不向下兼容。
整除的问题
还记得第一次发现1/3 == 0
的震惊吗?Unicode 问题
还记得第一次见到乱码时的困惑吗? utf-8 一统天下指日可待。升级版 range
或者不希望新人再去区分 xrange 是什么了?
而且因为有了__contains__
所以可以
1 in range(3)
- raise exceptions
同样需要一个括号
raise Exception("error")
- handing exceptions
现在需要 as 了
try:
raise Exception("error")
exception Exception as err:
print(err, "error")
for 循环控制 变量不再泄露进周围作用域
取缔了一个黑暗魔法input()
跟 range 一样,吞并了 raw_input()items()
跟 range 一样,吞并了 iteritems()
所以
d = {"a":"a", "b":"b"}
print([(v, k) for k, v in d.items()])
- 函数返回值
同 range 一样,zip(), map(),filter() 不再返回 list 而是返回迭代对象。可以
print(list(range(3)))。
总之,旧时代一去不复返,新时代已来临。