-2

我没有看过学习 Python 的完整教程,但我正在学习如何使用 pygame。我知道一些关于 Python 的事情,但不是很多,我现在正在尝试放置背景图像,教程说我必须使用这个函数:

def load_image(filename, transparent=False):
        try: image = pygame.image.load(filename)
        except pygame.error, message:
                raise SystemExit, message
        image = image.convert()
        if transparent:
                color = image.get_at((0,0))
                image.set_colorkey(color, RLEACCEL)
        return image

但是在我的编辑器(Pyscripter)中,该行except pygame.error, message:有一个 sintaxis 错误,我不知道为什么,如果我删除它,以 raise 开头的行也有一个 sintaxis 错误......我该怎么办?提前致谢!

4

1 回答 1

1

您正在使用旧语法 for except。新方式使用as

except pygame.error as message:

从 Python 3.x 开始,旧方法已被删除。见下文:

>>> try:
...     1/0
... except ZeroDivisionError, e:
  File "<stdin>", line 3
    except ZeroDivisionError, e:
                        ^
SyntaxError: invalid syntax
>>> try:
...     1/0
... except ZeroDivisionError as e:
...     print(e)
...
division by zero
>>>

此外,您的raise语句语法是错误的。它应该是:

raise SystemExit(message)

见下文:

>>> raise ZeroDivisionError, "NO!"
  File "<stdin>", line 1
    raise ZeroDivisionError, "NO!"
                       ^
SyntaxError: invalid syntax
>>> raise ZeroDivisionError("NO!")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: NO!
>>>

因此,您的最终代码应如下所示:

except pygame.error as message:
    raise SystemExit(message)
于 2013-10-21T17:07:04.310 回答