0

関数内から Python スクリプトの先頭で宣言された変数を更新できると思っていましたが、そうではありません。私はそれを使用してそれを行うことができますglobal:

count = 0

def updateCount():
    global count
    print count
    count = (count+1)%10

for x in xrange(10):
    updateCount()

これはこれを処理する最良の方法ですか (より高いレベルで変数を更新する関数)? これに対処する「pythonic」の方法は何ですか。グローバルは少し緩いようです。

また、これがすでに回答されている場合はお知らせください。質問を閉じます。問題の近くにすでに投稿されたかなりの数の回答を読んでいますが、そこにはありません。

4

1 に答える 1

1

達成したいことに応じて、複数のソリューションが存在します。

あなたの質問へのコメントですでに言及されているものもあります:

  • クラスを作成します。updateCountはメソッドでcountあり、属性です
  • updateCountグローバルを使用する代わりにからの戻り値count

また、使用できます

  • 閉鎖
  • 発電機

私見、最も「ピトニック」(「クール」と読む)の方法は、ジェネレーターを使用することです。ここに例を示します

def updateCount(x):
    count = 0
    for i in xrange(x):
        count = (count+1) % 10
        yield count

for i in updateCount(15):
    print i
于 2013-09-13T06:41:37.850 に答える