泽德·肖';让我们来学习Python的艰苦之路教程
我是编程新手,目前正在学习Zed Shaw的Python书中的练习。 在Zed的Ex41中,有以下功能:泽德·肖';让我们来学习Python的艰苦之路教程,python,Python,我是编程新手,目前正在学习Zed Shaw的Python书中的练习。 在Zed的Ex41中,有以下功能: def runner(map, start): next = start while True: room = map[next] print "\n-------" next = room() 我的问题是,当他可以直接使用“start”时,为什么他必须将“start”赋值给变量“next”?他为什么不这么做 de
def runner(map, start):
next = start
while True:
room = map[next]
print "\n-------"
next = room()
我的问题是,当他可以直接使用“start”时,为什么他必须将“start”赋值给变量“next”?他为什么不这么做
def runner(map, start):
while True:
room = map[start]
print "\n-------"
start = room()
因为这个功能似乎也起作用。谢谢第二个例子很管用,是的,但他正试图写一本Python教程风格的书,我认为第一个例子更清楚地说明了到底发生了什么<当变量名不再是实际的
start
,而是我们要进入的下一个房间时,code>start
就失去了意义。我想这只是为了可读性。在编写代码时,应始终记住变量(以及函数、类等)应始终具有有意义的名称,否则读取代码将是一场噩梦。循环中变量的含义是保存下一个项,而不是开始项。我认为这样做是为了可读性。在程序员的心目中,start
应该代表某件事情的开始<代码>下一个
应该代表下一个项目
您认为代码可以缩短是正确的,但它会破坏start
的含义
请注意,在当前版本的Python(2.6或更高版本)中,
next
是一个内置函数,因此为变量命名next
不再是一个好主意,他不必这样做,但出于命名风格的考虑。尽管这本书远不是最常用和推荐的Python教程,这是一个大幅度的问题,我们得到最多的“嗯?”关于这里的问题等等。试试看。只是用同样的功能帮助了一位同事。在这个练习中,我认为还有一些地方可以改进:-使用“map”作为变量名,-“ROOMS”字典键是字符串,与它们的值完全匹配。谢谢。很高兴知道。我真的以为我错过了什么。堆积如山的岩石!我会回来的;)非常感谢。我正在使用Python2.6。Zed实际上谈到了不使用内置函数作为变量,例如map。我会记下来的。