如何在Python中优雅地处理变量范围?

时间:2013-09-13 00:04:50

标签: python scope global

我认为我可以在函数内更新Python脚本顶部声明的变量,但事实并非如此。我设法使用global执行此操作:

count = 0

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

for x in xrange(10):
    updateCount()

这是处理此问题的最佳方法(在更高级别更新变量的函数)吗? 什么是'pythonic'处理这个问题的方法。全球似乎有点松散。

另外,如果已经回答,请告诉我,我会结束这个问题。我已经阅读了很多已经贴在这个问题上的答案,但还没有完全找到答案。

1 个答案:

答案 0 :(得分:1)

存在多种解决方案,具体取决于您希望实现的目标。

您的问题的评论中已经提到了一些内容:

  • 创建一个类。 updateCount是一种方法,count是一个属性
  • updateCount返回值,而不是使用全局count

您也可以使用

  • 闭包
  • 发电机

恕我直言,最“pytohnic”(读“酷”)方式可能是使用发电机,这是一个例子

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

for i in updateCount(15):
    print i