使用先前的输出值作为输入

时间:2016-08-25 21:38:25

标签: python function loops

我正在尝试查询API,但它一次只向我提供100条记录并提供分支记录,我需要使用它来查询接下来的100条记录。我可以编写一个函数来查询我的结果,但是我无法循环我的函数以使用前一个函数的输出作为以下函数的输入。这就是我想要我的循环基本上做的事情:

def query(my_offset=None):
    page = at.get('Accounts',offset=my_offset)
    a = page['records']
    return str(page['offset'])

query()
query(query())
query(query(query(query())))
query(query(query(query(query()))))
query(query(query(query(query(query())))))
...
...
...
...

5 个答案:

答案 0 :(得分:3)

我猜res可以有一个特殊值,表示不再返回任何行,如果是这样,可以部署while循环:

res = query()
while True:
    res = query(res)
    if not res: break

您只需将查询结果重新绑定到res并在每次迭代期间重复使用它。

答案 1 :(得分:0)

尝试从外部收集结果,然后再次调用该函数:

results = []
MAX_ITERATIONS = 20
offset = None

def query(offset=None):
  page = at.get('Accounts', offset=offset)
  return page['records'], page['offset']

while len(results) <= MAX_ITERATIONS:
   result, offset = query(offset)
   results.append(result)

答案 2 :(得分:0)

你是如何回归最终结果的?考虑:

def query():
    offset = None
    a = []
    while True:
        page = at.get('Accounts',offset=offset)
        a.extend(page['records'])
        offset = page['offset']
        if not offset: break
    return a

这只是Jim在收集和返回页面结果时的答案

答案 3 :(得分:0)

def query(result):
    # perform query
    return result

def end_query_condition(result):
    # if want to continue query:
    return True
    # if you want to stop:
    return False

continue_query = True
result = None
while continue_query:
    result = query(result)
    continue_query = end_query_condition(result)

答案 4 :(得分:0)

您可以简单地使函数递归,而不需要任何循环:

def query(my_offset=None):
    if not offset:
        return None
    page = at.get('Accounts',offset=my_offset)
    a = page['records']
    return query(str(page['offset']))