假设我有一个有助于网络连接的变量(例如: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])
那么有没有办法将变量从第一个脚本传递给第二个脚本,或者我必须定义一个在导入文件后调用的初始化函数?
答案 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")