在python中调用函数外部的变量?

时间:2014-04-24 00:40:10

标签: python game-engine

我知道之前曾被问过一百次,但我似乎无法从查看其他问题中得到直接答案。 我需要一个简单的解释,说明如何在脚本中的任何其他位置调用在该函数之外的函数内定义的变量。 这是第一个脚本:

#combat engine alpha stage
#individual character stats, compose of strength, speed, dexterity, STIR, experience, power, levels range 1-6
#Samoht stats strength1, speed2, dexterity3, STIR4, experience5, power6
samohtStats=(3, 3, 3, 3, 5, 5)
#Crepusc stats
crepuscStats=(6, 1, 2, 3, 4, 4)
import time
def askChar():
    askChar=int(input("Would you like to play as Crepusculum(1) or Samoht(2)?"))
    if askChar==1:
        print("Crepusculum: Strength-",crepuscStats[0],"Speed-",crepuscStats[1],"Dexterity-",crepuscStats[2],"STIR-",crepuscStats[3],"Experience-",crepuscStats[4],"Power-",crepuscStats[5])
        askOK=int(input("Is this your character? Yes(1) No(2)"))
        if askOK==1:
            char=1
            import arena
        elif askOK==2:
            askChar()
    elif askChar==2:
        print("Samoht: Strength-",samohtStats[0],"Speed-",samohtStats[1],"Dexterity-",samohtStats[2],"STIR-",samohtStats[3],"Experience-",samohtStats[4],"Power-",samohtStats[5])
        askOK=int(input("Is this your character? Yes(1) No(2)"))
        if askOK==1:
            char=2
            import arena
        elif askOK==2:
            askChar()
print("Welcome to TNS: Arena!(alpha)")
askChar()

然后是文件"竞技场"我正在进口:

#arena script
if char==1:
    print("test")
    time.sleep(3)
elif char==2:
    print("test")
    time.sleep(3)

如您所见,我还导入另一个文件,然后尝试在其函数之外使用局部变量。我不知道这是不是一个问题。 我只需要一个关于正确语法的简单解释来解决我的问题。

1 个答案:

答案 0 :(得分:0)

当您导入arena [如果它到达那么远]时,您应该收到一个NameError,抱怨没有名称char

在Python中导入模块时,通过执行import arena,您将在import语句的范围内创建名称arena。如果在函数内导入,则该函数中将提供arena。如果您在全局范围内导入它,它将是全局的。

名称arena将引用模块对象。请注意,module只是另一种Python对象类型。模块对象的属性是该模块源代码中的全局变量。

如果您在char内定义arena.py,然后在主文件的全局命名空间中定义import arena,则可以将char引用为arena.char