有人能向m解释“监护人模式”吗

2024-04-29 07:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

试图寻找守护者模式,但我找不到任何答案,所以我又来了。在我正在读的书中,作者使用了一行他称之为“守护者模式”的代码,但我并不真正理解它是如何工作的。这是一个例子,如果有人能给我解释一下,我将不胜感激。在

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}$

当你按回车键时,它就会出错。在


Tags: 答案代码trueinputrawifline模式
2条回答

Wouldn't the line be 0 and thus line isn't > 0?

如果您只需按enter行是""。空字符串。此字符串len(line)的长度为0(因此,只要and语句的第一个大小写被求值,程序就会继续。如果访问空行的第一个索引0,它将抛出一个错误。因此,在访问第一个索引之前,一定要检查它是否真的存在。。。在

so why, if the length of the line > 0 and line[0] == '#' : does it not error if I just hit enter with nothing there.

不,它不会抛出错误。{Python使用和short}运算符来启用lazy}。参见docs。在

换句话说,布尔表达式的第二部分,即line[0] == '#',只在第一部分是True的情况下计算。在

我相信这就是为什么作者称之为监护人模式的原因,这样表达式的第一部分避免了第二部分中可能出现的错误。在

如果您删除第一部分,如您所示的示例中所示,那么您将尝试访问lineline[0])的第一个元素,line中没有元素。在

相关问题 更多 >