递归函数不会返回预期的对象

2024-03-29 10:16:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个基本函数来递归地从ox.gdf_from_place函数中查找shapely多边形。基本上是调用ox.gdf_from_place,直到返回一个多边形。问题是我的函数即使执行得很好也不会返回任何结果

有没有人对如何使这项工作成功有什么建议

import shapely
import osmnx as ox

result_num = 0

def recursive_find_poly(poi, result_num):

    country = ox.gdf_from_place(poi, which_result=result_num)

    if type(country.unary_union) != shapely.geometry.polygon.Polygon:

        result_num += 1

        recursive_find_poly(poi, result_num)
    else:

        return country

test = recursive_find_poly('Istanbul', result_num)

Tags: 函数fromimportplaceresultfind多边形country
2条回答

if子句中忘记了一个return语句:

if type(country.unary_union) != shapely.geometry.polygon.Polygon:
    result_num += 1
    return recursive_find_poly(poi, result_num)
else:
    return country

否则,匹配调用返回的值将丢失

据我所知,递归函数应该总是返回一些东西,或者根本不应该返回任何东西。所以我认为递归函数的问题是:当你在if块中时,它不返回任何东西,但是当它在else块中时,它确实返回一些东西。如果你想办法重写你的函数,使它总是返回一些东西,我想它会工作的

相关问题 更多 >