2011-01-05 7 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チュートリアルから離れていますが、最も大きな違いがあります。あなたはここにあるのですか? 代わりにhttp://diveintopython.org/を試してください。 –

+0

同じ機能を持つ同僚を助けてくれました。私が考えていたそのエクササイズのいくつかの他のもの: - 変数名としての "マップ"の使用 - "ROOMS"辞書のキーは、その値であった関数に正確に一致する文字列です –

答えて

18

2番目の例はうまくいきますが、彼はPythonチュートリアルスタイルの本を書こうとしています。最初のものは何が起こっているのかがはっきりしていると思います。 startは、実際のstartではなく、私たちが入る部屋のnextというとき、変数名として意味を失います。

+1

ああ、ありがとう。知っておいてよかった。私は本当に何かが欠けていると思った。 Stackoverflow rocks!私は戻ってきます;) – kassold

2

私はそれが読みやすくするためだと思います。コードを記述するときは、変数(関数、クラスなど)には常に意味のある名前を付ける必要があります。それ以外の場合はコードを読むのは悪夢です。ループ内の変数の意味はの次のの項目であり、の開始の項目ではありません。

11

可読性のために行ったと思います。プログラマの心では、startは何かの始まりを表すはずです。 nextはおそらく次の項目を表すはずです。

コードは短縮できますが、意味はstartです。

現在のバージョンのPython(2.6以降)では、nextは組み込み関数なので、変数名をnextとするのは良い考えではありません。

+1

ありがとうございます。 Python 2.6を使用しています。 Zedは変数として組み込み関数を使わないことについて実際に話しました。地図。私は注意します。 – kassold

0

彼はを持っていませんでした。を持っていましたが、命名スタイルの考慮事項のためにしました。

関連する問題