为何我的Python代码无法导入变量?Pygame贪吃蛇开发报错
解决Pygame贪吃蛇开发中导入Var文件变量的NameError问题
问题场景
开发Pygame贪吃蛇游戏时,将状态变量(Over、_Main等)存放在独立的Var.py文件中,使用from Var import *导入变量后,运行主脚本触发错误:
NameError: name '_Main' is not defined
主脚本代码
# Importing Files import pygame as App from Var import * # Main Loop while not Over: if _Main: pass elif _Game : pass elif _Score: pass else : App.quit() Over = True App.init() for event in App.event.get(): if event.type == App.QUIT: App.quit() Over = True App.init() print("---> ! OVER ! <---")
Var.py代码
import pygame as App Over = False _Main = True _Game = False _Score = False
错误原因及修复方案
1. 核心原因:文件路径或命名问题
Python无法找到正确的Var.py文件,常见情况:
Var.py与主脚本不在同一目录下;- 文件名拼写错误(比如实际是
var.py,主脚本里写的from Var import *,Python对文件名大小写敏感)。
2. 修复步骤
- 确认文件位置:将
Var.py移至主脚本所在的文件夹,确保两者路径一致; - 检查文件名大小写:保证导入语句中的文件名与实际文件名完全匹配(比如Windows系统虽然文件名不区分大小写,但Python导入时仍会严格校验);
- 改用显式导入(可选):替换
from Var import *为显式导入变量,便于排查问题:from Var import Over, _Main, _Game, _Score - 移除重复初始化:主循环中重复调用
App.init()是冗余操作,应将App.init()移至脚本开头,只执行一次:
修正后的完整代码
主脚本
import pygame as App from Var import Over, _Main, _Game, _Score App.init() while not Over: if _Main: pass elif _Game : pass elif _Score: pass else : App.quit() Over = True for event in App.event.get(): if event.type == App.QUIT: App.quit() Over = True print("---> ! OVER ! <---")
Var.py
# 若Var.py中未使用pygame,可移除该导入 # import pygame as App Over = False _Main = True _Game = False _Score = False
内容的提问来源于stack exchange,提问作者Google User
相关产品推荐
相关产品推荐

