Python 局部变量';门打开';分配前参考
我对python非常陌生。我试图通过制作一个基于文本的游戏来学习。 在游戏中,我想要一个变量,door_open,开始为false,但一旦解锁door_open=True。下次调用该函数时,将显示另一条消息Python 局部变量';门打开';分配前参考,python,local-variables,Python,Local Variables,我对python非常陌生。我试图通过制作一个基于文本的游戏来学习。 在游戏中,我想要一个变量,door_open,开始为false,但一旦解锁door_open=True。下次调用该函数时,将显示另一条消息 door_open =False def house(): print "The door is locked" plan = raw_input(">") if plan.lower() == 'use key': invent
door_open =False
def house():
print "The door is locked"
plan = raw_input(">")
if plan.lower() == 'use key':
inventory.remove("House Key")
door_open = True
print "You are inside"
start() ## this just returns to the starting point outside
if door_open == True:
print "You walk inside"
exit(0) ## using this until I develop it more
else:
print "Door is locked. Do you want to use your key (Y/N)?"
如果要写入全局范围内的变量,需要使用global
关键字:
door_open = False
def house():
global door_open
print "The door is locked"
# ...
另外,请阅读并遵循Python风格指南。例如如果foo==True:,则不应使用,但如果foo:
则不应使用如果要写入全局范围内的变量,则需要使用全局
关键字:
door_open = False
def house():
global door_open
print "The door is locked"
# ...
另外,请阅读并遵循Python风格指南。例如如果foo==True:
,则不应使用,但如果foo:
Python在函数中看到变量赋值时,如果变量未标记为(或非局部变量),则应将该变量视为新的局部变量
因此,Python对待原始代码的方式与
door_open = False
def house():
if plan.lower() == 'use key':
door_open_LOCAL = True # only assigned here
if door_open_LOCAL == True: # whoops, might not be assigned yet!
pass
(也就是说,局部变量隐藏了全局变量,我通过给局部变量一个完全不同的名称来强调上面的一点。)
另见:
当Python在函数中看到对变量的赋值时,当该变量未标记为(或非局部
)时,它将该变量视为新的局部变量
因此,Python对待原始代码的方式与
door_open = False
def house():
if plan.lower() == 'use key':
door_open_LOCAL = True # only assigned here
if door_open_LOCAL == True: # whoops, might not be assigned yet!
pass
(也就是说,局部变量隐藏了全局变量,我通过给局部变量一个完全不同的名称来强调上面的一点。)
另见:
您试图跟踪游戏的状态,但有点迷失在状态记录的位置:
这是使用类的典型情况:
game.py
:
您可以看到类游戏和main
代码之间的分离,类游戏可以跟踪状态,甚至可以对状态进行一些更改,而main则可以尝试以某种方式使用游戏
类游戏
是一种想法,你关于游戏状态的笔记是什么样子的
然后在game=game()
将状态信息存储在设计良好且隔离良好的对象中非常方便,您知道,在哪里可以找到您需要的信息。您正在尝试跟踪游戏状态,但有点迷失在状态记录的位置:
这是使用类的典型情况:
game.py
:
您可以看到类游戏和main
代码之间的分离,类游戏可以跟踪状态,甚至可以对状态进行一些更改,而main则可以尝试以某种方式使用游戏
类游戏
是一种想法,你关于游戏状态的笔记是什么样子的
然后在game=game()
将状态信息存储在设计良好且隔离良好的对象中非常方便,您知道,在哪里可以找到您需要的信息