近期发现两个Python类型十分令人迷惑的问题,也是很容易出现BUG的地方。
1、
None>0
None<0
None==0
这三个bool变量值分别为False, True, False,而不引起异常。
2、
s = '%s %s %s' % (1, 2, '我是谁')
s的类型是<type 'str'>
稍微改一下——
us = u'我是谁'
s = '%s %s %s' % (1, 2, us )
s的类型变成了<type 'unicode'>
十分让人费解,为什么两种同样的写法结果连类型都不一样!
这两个问题目前是我对Python语法最不满意的地方,不满意的程度超过了定义函数时,使用可变类型作为默认参数引发的问题。