簡體   English   中英

在python中調用函數之外的變量?

[英]Calling a variable outside of a function in python?

我知道之前有人問過它一百次,但我似乎永遠無法從查看其他問題中得到直接的答案。 我需要一個簡單的解釋,說明如何調用在腳本中其他任何地方的函數之外的函數內定義的變量。 這是第一個腳本:

#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”:

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

如您所見,我還導入了另一個文件,然后嘗試在其函數之外使用局部變量。 我不知道這是否有問題。 我只需要簡單解釋一下解決我的問題的正確語法。

當您導入arena [如果它到達那么遠] 時,您應該收到 NameError 抱怨沒有名稱char

當您在 Python 中導入模塊時,通過執行import arena ,您將在 import 語句的范圍內創建一個名稱arena 如果您在函數內部導入,則該函數中將可以使用arena 如果在全局范圍內導入它,它將是全局的。

名稱arena將引用一個模塊對象 請注意, module只是另一種 Python 對象類型。 模塊對象的屬性是該模塊源代碼中的全局變量。

如果定義chararena.py ,然后import arena在你的主文件的全局命名空間,然后你可以參考char作為arena.char那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM