放置一个额外的lowest_cost_node = None进行变量声明

时间:2018-10-23 03:14:37

标签: python

我正在学习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放在标题部分中?

1 个答案:

答案 0 :(得分:1)

它处理空costs字典的特殊情况。

当前代码正常返回None,而您建议的修改将在运行时因UnboundLocalError异常而失败。

P.S。您的代码中有几个错误,但由于您的问题与他们无关,所以我没有解决。