簡體   English   中英

如何定義全局名稱?

[英]How do I define global names?

我正在嘗試學習Python,但是由於全局名稱,在制作某種文字冒險游戲時遇到了一些麻煩,這是我的代碼。

def startcave():
    print "You awake in an dark cave. You can't remember your past, but you need to find a way out. You feel hungry, although tired."
    print "Would you like to delve deeper via a cave passage, or look for a way out in this room?"
    answer = raw_input("Do you go -Deeper-, -Search-, or -Rest-?").lower()
    if answer == "Deeper" or answer == "deeper":
        lowcave1()
    elif answer == "Search" or answer == "search":
        searchcave()
    elif answer == "Rest" or answer == "rest":
        caverest()
    else:
        print "You must either say -Deeper- or -Search-"
        startcave()

startcave()

def lowcave1():
    print "You go deeper into the cave, walking down a steadily reclining corridor for some time, you have lost track of time."
    print "There is a large ledge before you. You can jump down, but there is no way back up."
    print "The cave may be dangerous, and you could end up being trapped. Do you turn back?"
    answer = raw_input("Do you -Jump- or -Turn back-?").lower()
    if answer == "Jump" or answer == "jump":
        lowcave2()
    elif answer == "Turn back":
        caverest2()

lowcave1()

如果我回答“更深”,則會發生此錯誤。

Traceback (most recent call last):
  File "C:\Users\Student\Desktop\Cavestuff.py", line 15, in <module>
    startcave()
  File "C:\Users\Student\Desktop\Cavestuff.py", line 6, in startcave
    lowcave1()
NameError: global name 'lowcave1' is not defined

使用global關鍵字表示您要使用全局變量。

foo = 123

def bar():
    global foo
    print(foo)

您需要先定義所有函數,然后才能調用它們

def startcave():
    print "You awake in an dark cave. You can't remember your past, but you need to find a way out. You feel hungry, although tired."
    print "Would you like to delve deeper via a cave passage, or look for a way out in this room?"
    answer = raw_input("Do you go -Deeper-, -Search-, or -Rest-?").lower()
    if answer == "Deeper" or answer == "deeper":
        lowcave1()
    elif answer == "Search" or answer == "search":
        searchcave()
    elif answer == "Rest" or answer == "rest":
        caverest()
    else:
        print "You must either say -Deeper- or -Search-"
        startcave()

def lowcave1():
    print "You go deeper into the cave, walking down a steadily reclining corridor for some time, you have lost track of time."
    print "There is a large ledge before you. You can jump down, but there is no way back up."
    print "The cave may be dangerous, and you could end up being trapped. Do you turn back?"
    answer = raw_input("Do you -Jump- or -Turn back-?").lower()
    if answer == "Jump" or answer == "jump":
        lowcave2()
    elif answer == "Turn back":
        caverest2()

startcave()

lowcave1()

好的,您應該使用global

a = 1
print '1: ', a # Prints 1: 1

def f1():
  a = 2
  print '2: ', a

f1() # Prints 2: 2

print '3: ', a # Prints 3: 1

def f2():
  global a
  a = 3
  print '4: ', a

f2() # Prints 4: 3

print '5: ', a # Prints 5: 3

暫無
暫無

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

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