(Pygame) Python 在“:”上表示 "invalid syntax",但仅在特定脚本中

(Pygame) Python says "invalid syntax" on a " : ", but only in a specific script

首先,对于这个可能是一个非常菜鸟的问题,我深表歉意。

话虽如此,我想了解为什么 Python 有时会在脚本中以“:”为目标并抛出 "invalid syntax" 错误。它通常发生在我向脚本添加一些东西之后,然后它一直说在 "if" 语句之后放置一个“:”是错误的。

为了验证这是如何发生的,我创建了一个不同的 "if" 语句来放置旧语句所在的位置,但错误仍然发生。我还尝试将 "if" 语句复制粘贴到另一个脚本中,并且成功了。

for event in pygame.event.get():

上面的行位于以下脚本的第 35 行:

  import pygame, sys

  display_width = 800
  display_height = 600

  BLUE = (0,0,255) 

  DISPLAY = pygame.display.set_mode ((display_width,display_height))

  Player_img = pygame.image.load("spacecore.png") 

  clock = pygame.time.Clock()

  Player_Img = pygame.image.load("role.png")


  def game_loop():

  Game = True

  while Game == True:

        pygame.display.update()

        DISPLAY.fill(BLUE)
        clock.tick(60)

        def player(x,y):
            DISPLAY.blit(Player_Img,(x,y))
            mod_x = mod_y = 0   
            x += mod_x
            y += mod_y

        player((10,100)

        for event in pygame.event.get():
             if event.type == pygame.key.get_pressed():
                  if event.key == pygame.K_LEFT:
                      mod_x = 3
                  elif event.key == pygame.K_LEFT:
                      mod_x = 3
                  elif event.key == pygame.K_LEFT:
                      mod_x = 3
                  elif event.key == pygame.K_LEFT:
                      mod_x = 3
                  else:
                      mod_x = mod_y = 0

          if event.type == pygame.QUIT:
              Game = False

   game_loop()
   pygame

您在这里缺少右括号:

  player((10,100)

当一行中有未闭合的括号 (() [] {}) 时,python 将解释以下行,因为它们都写在同一个线。通过这种方式,您可以在多行中中断大型数组初始化或带有大量参数的函数调用,而无需 转义每行末尾的换行符.

你可以这么写:

max(
  [1, 2, 3, 4, 5],
  key=math.sin
)

而不是这个:

max(                \
  [1, 2, 3, 4, 5],  \
  key=math.sin      \
)

Hovewer,在你的情况下,它隐藏了真正的语法错误,并产生了一个错误的错误,: 是第一个不能写在函数调用的参数列表中的术语。 ((10, 100) for event in pygame.event.get()) 之前的术语可能是一个 生成器表达式 ,如果冒号不存在,这就是为什么它在冒号上失败而不是在缺少的括号上失败。