2011-01-05 92 views
4

我是編程新手,目前正在通過Zed Shaw的Python書籍練習。 在捷思銳的EX41,還有這個功能:Zed Shaw的Python學習難點教程

def runner(map, start): 
    next = start 

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

我的問題是,他爲什麼要指定「開始」給變量「下一步」時,他也可以使用「開始」直線距離?他爲什麼不這樣做?

def runner(map, start): 


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

因爲這個功能似乎也起作用。謝謝

+7

儘管這本書遠不是最常用和推薦的Python教程,但是它大幅度提高了我們獲得最多的「嗯?」關於SO的問題。 請嘗試http://diveintopython.org/。 – 2011-01-05 22:38:20

+0

只是幫助一位同事完成同樣的功能。這個練習中的其他一些東西我認爲可以改進: - 使用「map」作爲變量名稱 - 「ROOMS」字典鍵是完全匹配它們的值的函數字符串 – 2011-08-30 01:22:14

回答

18

第二個例子的作品,是的,但他正在嘗試編寫一本Python教程風格的書,我認爲第一個例子更清楚地知道發生了什麼。作爲變量名的start在不再是實際的start時丟失了含義,而是我們要進入的next房間。

+1

啊,謝謝。很高興知道。我真的以爲我錯過了一些東西。 Stackoverflow岩石!我會回來的;) – kassold 2011-01-06 21:41:54

2

我想這只是爲了可讀性。在編寫代碼時,應始終記住變量(以及函數,類等)應始終具有有意義的名稱,否則讀取代碼將是一場噩夢。循環中變量的含義是保存下一個項目,而不是開始項目。

11

我認爲這是爲了可讀性而完成的。在程序員的腦海裏,start應該代表某事的開始。 next據推測應該代表下一個項目。

您是正確的代碼可以縮短,但它破壞了start的含義。

請注意,在當前版本的Python(2.6或更高版本)中,next是一個內置函數,因此命名變量next不再是一個好主意。

+1

謝謝。我正在使用python 2.6。實際上Zed談到了不使用內置函數作爲變量,例如。地圖。我會記下來。 – kassold 2011-01-06 21:44:10

0

他沒有,但是用於命名風格的考慮。