2016-02-13 207 views
4

我有这个配置文件:Python的 - 从一个函数返回值

[test] 
one: value1 
two: value2 

该函数返回的项目,值从配置文件中的部分测试,但是当我调用该函数只返回第一个项目(一,值1 )。

def getItemsAvailable(section): 
    for (item, value) in config.items(section): 
     return (item, value) 

我所说的getItemsAvailable()这个函数:

def test(): 
    item, value = getItemsAvailable('test') 
    print (item, value) 

我想我应该创建getItemsAvailable()函数的列表,并返回列表读取测试值()功能,是真的吗?

有什么建议吗?

谢谢!

回答

2

使用列表理解。更改

for (item, value) in config.items(section): 
    # the function returns at the end of the 1st iteration 
    # hence you get only 1 tuple. 
    # You may also consider using a generator & 'yield'ing the tuples 
    return (item, value) 

return [(item, value) for item, value in config.items(section)] 

以及有关您的test()功能:

def test(): 
    aList = getItemsAvailable('test') 
    print (aList) 
+1

嘿,非常好的解决方案。谢谢!! ;) –

+0

@JoseFerre不客气 –

1

使用发电机功能:

def getItemsAvailable(section): 
    for (item, value) in config.items(section): 
     yield (item, value) 

而得到这样的项目:

def test(): 
    for item, value in getItemsAvailable('test'): 
     print (item, value) 
+0

哇,我想我会写我的代码。坦克! –