Zed Shaw的《死学Python》教程

4 投票
4 回答
4214 浏览
提问于 2025-04-16 09:28

我刚开始学习编程,现在正在做Zed Shaw的Python书里的练习。在Zed的第41章里,有一个函数:

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 个回答

2

我想这主要是为了让代码更容易读懂。当你写代码的时候,要时刻记得给变量(还有函数、类等等)起个有意义的名字,不然看你的代码就像做噩梦一样。循环中的变量是用来保存下一个项目的,而不是起始项目。

10

我觉得这样做是为了让代码更容易读懂。在程序员的脑海里,start应该表示某个事情的开始,而next则是表示下一个项目。

你说得对,代码可以简化,但这样会让start的意思变得模糊。

需要注意的是,在现在的Python版本(2.6及以后)中,next已经是一个内置函数,所以不再适合用next来命名变量了。

18

第二个例子确实能用,但他想写一本关于Python的教程书,我觉得第一个例子更清楚地说明了发生了什么。start这个变量名在不再表示实际的start时就失去了意义,而是变成了我们要进入的下一个房间next

撰写回答