在Python中初始化全局对象

时间:2013-01-30 03:30:36

标签: python global-variables

总之,我的问题是如何轻松地将连接资源变为全局变量?具体来说,我想打开Redis队列连接,并希望在多个函数中使用它,而无需将其作为参数传递,即。'

#===============================================================================
# Global variables
#===============================================================================
REDIS_QUEUE <- how to initialize

然后,在我的主要功能中,有

# Open redis queue connection to server
REDIS_QUEUE = redis.StrictRedis(host=SERVER_IP, port=6379, db=0)

然后在多个功能中使用REDIS_QUEUE,例如

def sendStatusMsgToServer(statusMsg):
    print "\nSending status message to server:"
    print simplejson.dumps(statusMsg)
    REDIS_QUEUE.rpush(TLA_DATA_CHANNEL, simplejson.dumps(statusMsg))

我认为REDIS_QUEUE = none会起作用,但它会给我

AttributeError: 'NoneType' object has no attribute 'rpush'

我是Python的新手,解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

如果要从函数内部设置全局变量的值,则需要使用global语句。所以在你的主要功能中:

def main():
    global REDIS_QUEUE
    REDIS_QUEUE = redis.StrictRedis(host=SERVER_IP, port=6379, db=0)
    # whatever else

请注意,在执行此操作之前,无需在main之外“初始化”变量,尽管您可能只想记录变量的存在。