你好,我想在一行中实例化Philosopher类的5个对象,但我得到了一个缩进错误:unident与任何外部缩进级别都不匹配。这是我的源代码。如何解决此问题?
forks=[threading.Lock() for i in range(5)]
philosopherNames={'Shubham','Nikhil','Soham','Khirade','Aditya'}
philosopher= [Philosopher(i, philosopherNames[i], forks[i%5], forks[(i+1)%5]) for i in range(5)]
random.seed(507129)
Philospher.running=True
for p in philosopher:
p.start()
time.sleep(100)
Philosopher.running=False
print "Now we are ending"
缩进错误正是这样;你的文件缩进不正确。这与您的代码无关,您只需要仔细检查,以确保脚本文件中使用的空格或制表符数量完全相同。
如何解决
这是您的错误:
philosopher= [Philosopher(i, philosopherNames[i],
forks[i%5], forks[(i+1)%5]) for i in range(5)]
^
只要去掉那个反斜杠,一切都会好起来的。
为什么会发生这种情况
philosopher
列表是用列表理解创建的,这是Python的函数编程位。
你通常用制表符/空格来缩进循环(不过不要把两者混合),如下所示:
data = []
for x in range(2, 8):
data.append(x**2) # indented this
使用列表理解,您不需要任何缩进:
data = [x**2 for x in range(2, 8)]
据我所知,您试图在列表理解中用反斜杠缩进for
,这显然是错误的。