总之,我的问题是如何轻松地将连接资源变为全局变量?具体来说,我想打开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的新手,解决这个问题的最佳方法是什么?
答案 0 :(得分:4)
如果要从函数内部设置全局变量的值,则需要使用global
语句。所以在你的主要功能中:
def main():
global REDIS_QUEUE
REDIS_QUEUE = redis.StrictRedis(host=SERVER_IP, port=6379, db=0)
# whatever else
请注意,在执行此操作之前,无需在main
之外“初始化”变量,尽管您可能只想记录变量的存在。