试图寻找守护者模式,但我找不到任何答案,所以我又来了。在我正在读的书中,作者使用了一行他称之为“守护者模式”的代码,但我并不真正理解它是如何工作的。这是一个例子,如果有人能给我解释一下,我将不胜感激。在
while True:
line = raw_input('> ')
if len(line) > 0 and line[0] == '#' :
continue
if line == 'done':
break
print line
print "done!"
那么为什么,如果行的长度大于等于0,而行[0]=“#'”: 如果我只是按enter键却什么也没有,这不是错误吗。行不是为0,因此行不是大于0吗?如果你把原始代码放在
^{pr2}$当你按回车键时,它就会出错。在
如果您只需按enter行是
""
。空字符串。此字符串len(line)
的长度为0(因此,只要and
语句的第一个大小写被求值,程序就会继续。如果访问空行的第一个索引0
,它将抛出一个错误。因此,在访问第一个索引之前,一定要检查它是否真的存在。。。在不,它不会抛出错误。{Python使用和short}运算符来启用lazy}。参见docs。在
换句话说,布尔表达式的第二部分,即
line[0] == '#'
,只在第一部分是True
的情况下计算。在我相信这就是为什么作者称之为监护人模式的原因,这样表达式的第一部分避免了第二部分中可能出现的错误。在
如果您删除第一部分,如您所示的示例中所示,那么您将尝试访问
line
(line[0]
)的第一个元素,line
中没有元素。在相关问题 更多 >
编程相关推荐