【问题标题】:Return value from function which calls itself从调用自身的函数返回值
【发布时间】:2022-01-01 09:44:01
【问题描述】:

我有一些自己调用的函数:

def rep_func(parent_id, account_id):
    ...

    for page in iterator:
        for item in page['Children']:
            if id == item['Id']:
                //return parent_id
                
    for page in org_iterator:
        for ou in page['Children']:
            rep_func(ou['Id'], account_id)

if 成功时,我需要从函数中返回parent_id。我怎样才能做到这一点?我需要break吗?

【问题讨论】:

  • 您希望在第二个循环中使用rep_func(ou['Id'], account_id) 的值做什么?现在,你什么都不做。
  • 我想用新值再次调用函数?所以我正在循环我的函数,并且在其中一次运行期间 if 是成功的。
  • 是的,你用新值调用函数,它会返回一个结果。你想对结果做什么?
  • parent_id 稍后应该在不同的函数中使用,其他结果对我来说并不重要

标签: python python-3.x return


【解决方案1】:

你需要return的值;这会自动中断当前循环。

对于递归的情况,我猜你想检查是否找到任何值,并有条件地返回它,这样如果递归调用不成功,循环将继续搜索:

def rep_func(parent_id, account_id):
    # ...

    for page in iterator:
        for item in page['Children']:
            if id == item['Id']:
                return parent_id
                
    for page in org_iterator:
        for ou in page['Children']:
            if result := rep_func(ou['Id'], account_id):
                return result

    # we implicitly return None if no match found

【讨论】:

  • 请注意,海象运算符需要 3.8 或更高版本。
猜你喜欢
  • 1970-01-01
  • 2013-07-06
  • 2014-07-14
  • 2022-06-11
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多