我得到的代码需要共享某个变量,如:
def example(arg):
req = urllib2.Request(r'{}'.format(arg))
...
def exampe2(arg):
# i need this func to access req
# i think i can't use req as a global var since the program might need to get imported and it would run from main() (which is again a function)
非常希望得到你的帮助!
答案 0 :(得分:0)
如评论中所述;你可以做一个按参数传递的方法,如下所示:
def example2(arg, req):
....
def example(arg):
req = urllib2.Request(r'{}'.format(arg))
...
return example2(..., req)
或者您可以轻松地集成这两个功能,因为您可以合并arg
和example
上的两个example2
参数。
答案 1 :(得分:0)
这个例子可能对我有帮助
def example1(arg):
example1.request = "from example1"
....
def example2(arg):
print(example1.request)
example1("arg1")
example2("arg2")
> from example one
否则你可以将请求作为全局请求并在example2函数中使用该请求varable。但是你需要做的就是在example2之前执行example1。或者,您可以从example1返回请求,并将example1返回值分配给example2中的另一个变量。
答案 2 :(得分:0)
只是将其作为返回值和参数传递?这是一项功能,因为它允许您将内容保持在本地。如果你的函数需要大量的参数或提供大量的输出,那么它通常表明它可以被分解成多个函数(理想情况下,一个函数应该做一个明确分离的事情并且这样命名)。
在某些情况下,当然,您希望传递一些数据,例如配置选项:您可能会为此创建一些新对象,但为什么不仅仅是字典?
def make_request(arg, config):
req = urllib2.Request(r'{}'.format(arg))
config['req'] = req
return config
请注意,我返回了dict config
,即使它没有必要,因为dicts在Python中是可变的。这只是在代码中清楚地表明我正在修改它。现在我们可以使用config:
def exampe2(arg, config):
arg = config['arg']
...do stuff..