如果未定义变量,Python通常会抛出NameError
:
>>> d[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
然而,您已经设法找到了Python中已经存在的名称.
因为你看到的似乎是一条奇怪的错误信息,但实际上并非如此.
dict
型是type
型.所有类型都是Python中的对象.因此,你实际上是在try 索引type
对象.这就是为什么错误消息说"'type'对象不可订阅."
>>> type(dict)
<type 'type'>
>>> dict[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'type' object is not subscriptable
请注意,您可以盲目地指定dict
个名称,但如果您 Select really don't want to do that.,它只会在以后给您带来问题.
>>> dict = {1:'a'}
>>> type(dict)
<class 'dict'>
>>> dict[1]
'a'
问题的真正根源在于,在try 使用变量之前,必须先分配变量.如果你只是简单地重新排列你的问题的陈述,它几乎肯定会起作用:
d = {1: "walk1.png", 2: "walk2.png", 3: "walk3.png"}
m1 = pygame.image.load(d[1])
m2 = pygame.image.load(d[2])
m3 = pygame.image.load(d[3])
playerxy = (375,130)
window.blit(m1, (playerxy))