在将来的函数中使用由函数生成的字典

时间:2015-09-02 15:52:59

标签: python dictionary arguments

我有一个函数可以创建2个字典,格式如下所示,我想在将来的函数中使用这两个字典。

例如:

{{1}}

但是我被告知dict1和dict2没有被定义,我会认为通过从函数返回它我可以将它用作未来函数中的参数。我不想设置全局变量。

3 个答案:

答案 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)

现在dict1dict2一旦some_function结束,就会超出范围。 yieldreturn不同...据我所知,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