簡體   English   中英

不同功能中的相同變量。 (蟒蛇)

[英]Same Variable in different Functions. (Python)

新手在這里,我目前正在LearnPythonTheHardWay的ex 36中編寫一個“游戲”。

如果我想在一個函數中詢問用戶名。 我如何回想起人們在其他所有功能中的名字,而無需再次詢問,或再次將其設置為=? 根據我的理解,一個函數中的變量不會影響其他函數,但是如果我希望它會怎樣呢?

def room_1():
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    print "Hi %s" % name    

有兩種方法,第一種是創建一個類並設置一個名為playername的屬性。 就像是:

class Game(object):
    def __init__(self,playername=None):
        if playername is None: self.playername = raw_input("What's your name? ")
        else: self.playername = playername
        # initialize any other variables here

    def run(self):
        # all your code goes here, and self.playername
        # is always your player's name.

game = Game()
game.run()

另一個被廣泛使用(並且正確!)。 您可以使用全局

global name
name = raw_input("What is your name? ")

現在,只要你不覆蓋name在你的任何功能,它們可以調用name和訪問它,仿佛它是一個局部變量。

編輯:看來您正在嘗試構建一款應該實現有限狀態機的游戲,這幾乎肯定超出了您現在的能力。 您當然可以不用任何工具就能做到這一點,但是代碼總會帶有“意大利面條”的感覺。 class Game是邁向FSM的第一步,但是還有很長的路要走:)

詢問名稱時,應將其聲明為global,因此在其他函數中也可以使用它:

def room_1():
    global name
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    print "Hi %s" % name 

現在,您可以在函數外部定義變量,然后使用global關鍵字進行調用。

通常,您將使用一個類來進行此類操作,但是最終您會到達那里:o)

name = ''

def room_1():
    global name
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    global name
    print "Hi %s" % name   

暫無
暫無

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

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