我有一个函数可以创建2个字典,格式如下所示,我想在将来的函数中使用这两个字典。
例如:
{{1}}
但是我被告知dict1和dict2没有被定义,我会认为通过从函数返回它我可以将它用作未来函数中的参数。我不想设置全局变量。
答案 0 :(得分:1)
你在这里留下了一些代码 - 首先如何调用some_function()
?我假设它在底部调用,你的实际代码是这样的:
def some_function():
dict1 = {'key1':['1', '2'], 'key2':['3', '4']}
dict2 = {'key3':['5', '6'], 'key4':['7', '8']}
yield dict1
yield dict2
def some_other_function(dict1, dict2):
"some code using dict1"
"some code using dict2"
some_function()
some_other_function()
您需要做的是return
来自第一个函数的dicts并将它们传递给第二个函数。像这样:
def some_function():
dict1 = {'key1':['1', '2'], 'key2':['3', '4']}
dict2 = {'key3':['5', '6'], 'key4':['7', '8']}
return dict1, dict2
def some_other_function(dict1, dict2):
"some code using dict1"
"some code using dict2"
dict1, dict2 = some_function()
some_other_function(dict1, dict2)
现在dict1
和dict2
一旦some_function
结束,就会超出范围。 yield
与return
不同...据我所知,yield
只能在由上下文管理器装饰器修饰的函数中使用,或者在generator
内使用
答案 1 :(得分:0)
有两件事在想。
创建一个元组并从第一个函数返回它。然后将元组作为另一个参数传递并将其解压缩。
def some_function():
dict1 = {'key1':['1', '2'], 'key2':['3', '4']}
dict2 = {'key3':['5', '6'], 'key4':['7', '8']}
tup = (dict1, dict2)
return tup
def some_other_function(dict1, dict2):
print dict1
print dict2
a,b = some_function()
some_other_function(a,b)
您也可以使用zip()
答案 2 :(得分:0)
你需要xsl:copy-of
词典???
这个怎么样:
yield
或选项2:
# call some_other_function directly
def some_function():
dict1 = {'key1':['1', '2'], 'key2':['3', '4']}
dict2 = {'key3':['5', '6'], 'key4':['7', '8']}
some_other_function(dict1, dict2)
def some_other_function(dict1, dict2):
# dict1 and dict2 will now be defined