我正在学习Dijkstran算法并阅读以下代码:
#dijkstra algorithms
def find_lowest_cost_node(costs):
#cost is a dict
lowest_cost = float("inf")
lowest_cost_node = None
for node in costs:
cost = costs[node]
if cost < lowest_cost and cost not in processed:
lowest_cost = cost
lowest_cost_node = node
return lowest_cost_node
我对lowest_cost_node
声明lowest_cost_node = None
很好奇。
如果我将其注释掉,该功能将正常运行,
为什么要花费额外的精力将lowest_cost_node = None
放在标题部分中?
答案 0 :(得分:1)
它处理空costs
字典的特殊情况。
当前代码正常返回None
,而您建议的修改将在运行时因UnboundLocalError
异常而失败。
P.S。您的代码中有几个错误,但由于您的问题与他们无关,所以我没有解决。