Python函数使用return后调用无输出问题排查求助
问题原因及解决方法
核心问题分析
print语句永远不会执行
函数里的return cities是函数的出口,一旦执行到这一行,函数会立刻返回结果并终止运行,后面的print(cities)根本没机会被执行。调用函数时未处理返回值
你执行countCities(cities1, cities2, cities3)时,函数确实会返回统计好的字典,但你没有把这个返回值打印出来,所以控制台不会有任何输出。和全局变量无关,是你没主动输出返回结果。
解决办法
方法一:调整print和return的顺序
如果想在函数内部直接打印结果,把print移到return前面:
def countCities(c1, c2, c3): cities = {"eu": 0, "as": 0, "am": 0, "sa": 0, "af": 0} for x in c1 + c2 + c3: code = x.split("-")[-1] if code in cities: cities[code] += 1 print(cities) # 先打印再返回结果 return cities cities1 = ["london-eu","bangkok-as", "madrid-eu"] cities2 = ["paris-eu","milan-eu", "madrid-eu", "budapest-eu"] cities3 = ["houston-am","milan-eu", "bogota-sa", "nairobi-af"] countCities(cities1, cities2, cities3)
方法二:调用函数时打印返回值
保持函数的return逻辑不变,在调用时主动打印函数的返回结果:
def countCities(c1, c2, c3): cities = {"eu": 0, "as": 0, "am": 0, "sa": 0, "af": 0} for x in c1 + c2 + c3: code = x.split("-")[-1] if code in cities: cities[code] += 1 return cities cities1 = ["london-eu","bangkok-as", "madrid-eu"] cities2 = ["paris-eu","milan-eu", "madrid-eu", "budapest-eu"] cities3 = ["houston-am","milan-eu", "bogota-sa", "nairobi-af"] # 调用函数并打印返回的统计结果 print(countCities(cities1, cities2, cities3))
内容的提问来源于stack exchange,提问作者kei
相关产品推荐
相关产品推荐

