python unboundLocalError:赋值前引用了局部变量“HighestStockName”

python unboundLocalError:赋值前引用了局部变量“HighestStockName”,python,Python,我正在写一个程序,我的一个函数有问题。当我尝试运行该程序时,我得到以下关于unboundLocalError的错误。有人能帮我修复这个错误吗 def GetSale(Names, Prices, Exposure): HighestStock = 0 for Stock in Names: TotalProfit = ((Prices[Stock][1] - Prices[Stock][0]) - Exposure[Stock][1] * Prices[Stock][0]) *

我正在写一个程序,我的一个函数有问题。当我尝试运行该程序时,我得到以下关于unboundLocalError的错误。有人能帮我修复这个错误吗

def GetSale(Names, Prices, Exposure):
HighestStock = 0
for Stock in Names:
    TotalProfit = ((Prices[Stock][1] - Prices[Stock][0]) - Exposure[Stock][1] * 
    Prices[Stock][0]) * Exposure[Stock][0]
    if (TotalProfit > HighestStock):
       HighestStock = TotalProfit        
       HighestStockName = Stock
print("Highest selling stock is", HighestStockName, "with a ", HighestStock, "profit margin.")

如果参数“Names”为None或空,或者如果If TotalProfit>HighestStock条件为false

print("Highest selling stock is", HighestStockName, "with a ", HighestStock, "profit margin.")
将引发UnboundLocalError,因为HighestStockName是在for循环的if块中分配的

也许可以尝试初始化HighestStock=0下面的值“HighestStockName”

def GetSale(Names, Prices, Exposure):    
    HighestStock = 0 
    HighestStockName = ''
    for Stock in Names:            
        TotalProfit = ((Prices[Stock][1] - Prices[Stock][0]) - Exposure[Stock][1] * Prices[Stock][0]) *     Exposure[Stock][0]             
        if (TotalProfit > HighestStock):       
            HighestStock = TotalProfit     
            HighestStockName = Stock
    print("Highest selling stock is", HighestStockName, "with a ", HighestStock, "profit margin.")
或者只捕获UnboundLocalError异常,并从中找出要执行的操作

def GetSale(Names, Prices, Exposure):    
        HighestStock = 0 
        for Stock in Names:            
            TotalProfit = ((Prices[Stock][1] - Prices[Stock][0]) - Exposure[Stock][1] * Prices[Stock][0]) *     Exposure[Stock][0]             
            if (TotalProfit > HighestStock):       
                HighestStock = TotalProfit     
                HighestStockName = Stock
        try:
            print("Highest selling stock is", HighestStockName, "with a ", HighestStock, "profit margin.")
        except UnboundLocalError, e:
            # Do something after catching the exception

请考虑,如果TotalProfit的所有计算结果均为0或负值,则永远不会输入内部if块,因此永远不会指定/定义最高的股票名称。

请编辑代码格式:。很抱歉,这样更好吗?最好遵循unboundLocalError异常,它告诉您没有输入if TotalProfit>HighestStock:语句,并且没有分配HighestStockName变量。您可以通过在设置HighestStock=0的正下方分配HighestStockName=None来避免异常。