![](/img/trans.png)
[英]Same variable names but with different values within two seperate “def” functions. Can they not change down the code somehow?
[英]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.