使用导入文件中的变量?

时间:2017-08-28 21:39:26

标签: python python-import

假设我有一个有助于网络连接的变量(例如:API访问令牌)我想在我正在导入的模块中使用(用于扩展现有函数),有没有办法通过该变量到导入的脚本而不添加新的类或方法来初始化它?

例如:

脚本一(performer.py):

import telepot
import botActions # Possibly adding an argument here?

botActions.sendMessage("locationID", "message")

accessToken = "SAMPLE"

脚本二(botActions.py):

import botApiWrapper

def sendMessage(locationID, text):
    bot.sendMessage(locationID, text)
    print("Message sent to %g: %t".format(g=locationID, t=text))

bot = botApiWrapper.Bot(sys.argv[0])

那么有没有办法将变量从第一个脚本传递给第二个脚本,或者我必须定义一个在导入文件后调用的初始化函数?

2 个答案:

答案 0 :(得分:1)

执行此类操作的规范方法是从其他文件定义初始化函数。而不是bot = botApiWrapper.Bot(sys.argv[0]),尝试类似

的内容
def newbot(arg):
    bot = botApiWrapper.Bot(arg)
    return bot

然后从其他模块调用该函数。

答案 1 :(得分:0)

如果您需要操作状态,请定义一个类。

class Bot(object):
    def __init__(self, arg):
        self.arg = arg
    def sendMessage(self, locationId, text):
        print "Using arg %s to send message to location %s with text %s" % \
            (self.arg, locationId, text)

...之后让你初始化尽可能多的机器人:

import botApiWrapper

botA = botApiWrapper.Bot("A")
botA.sendMessage("foo", "bar")

botB = botApiWrapper.Bot("B")
botB.sendMessage("baz", "qux")