感觉‘A’or‘B’得A有点不对
知识点里面说的是‘a=T’or 'a=F',得‘a=T’,可是老师明明说的是 在计算 a or b 时,如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。‘a=T‘or和'a=F'难道都不是False吗?
2015-12-20
a = 'python'
print 'hello,', a or 'world'
b = ''
print 'hello,', b or 'world'
看到楼主代码如上, 在编程语言中经常有一种概念,叫做‘最短路径’。
以 Python中的 or 语句来说,如果or前面为True,则直接返回or前面的值,如果or前面为False 则直接返回or后面的值。
同时Python还有一个特性就是 bool值的隐性转换,虽然int 和str是不能隐形转换的(比如:a=1 b='2' c=a+b 这样的语句是会报TypeError的)
但是其他数据类型往bool值转换时却支持隐形转化,所以 楼主代码中 a or 'world' ,因为a 被赋值为‘python’。这里就会做隐性的bool转换(就字符串类型而言,空字符转=False, 非空字符串=True),在根据‘最短路径’原则:or前面为True,则直接返回前面的值,所以 a or 'world' 就是 'python' 了。下面关于b的 同理,我就不罗嗦了。
举报