Zed Shaw的学习Python艰难的教程

时间:2011-01-05 21:26:20

标签: python

我是编程新手,现在正在Zed Shaw的Python书中练习。 在Zed的Ex41中,有这个功能:

def runner(map, start):
     next = start

     while True:
         room = map[next]
         print "\n-------"
         next = room()

我的问题是,为什么当他可以直接使用'start'时,他必须为变量'next'分配'start'?他为什么不这样做?

def runner(map, start):


     while True:
         room = map[start]
         print "\n-------"
         start = room()

因为这个功能似乎也有效。感谢

4 个答案:

答案 0 :(得分:18)

第二个例子有效,是的,但他正在尝试编写一本Python教程样式书,我认为第一个例子更准确地说明了究竟发生了什么。 start作为变量名称,如果它不再是实际的start,而是我们要进入的next会议室,则会失去意义。

答案 1 :(得分:11)

我认为这是为了提高可读性。在程序员的心目中,start应该代表某事的开始。据推测,next应该代表下一个项目。

你是正确的,可以缩短代码,但它会破坏start的含义。

请注意,在当前版本的Python(2.6或更高版本)中,next是一个内置函数,因此命名变量next不再是一个好主意。

答案 2 :(得分:2)

我想这只是为了可读性。在编写代码时,您应该始终牢记变量(以及函数,类等)应始终具有有意义的名称,否则读取代码将是一场噩梦。循环中变量的含义是保留 next 项,而不是 start 项。

答案 3 :(得分:0)

他没有拥有,但却是出于命名式考虑。