You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:15:18