TypeError: 'int' object is not callable, assigning equal names to diff variables?

TypeError: 'int' object is not callable, assigning equal names to diff variables?

我已经解决这个问题几个小时了,我似乎给一个整型变量和一个函数命名了相同的名称,但我只是不知道我给哪个 variable/function 分配了相同的名称至。这是发生错误的函数:

def Automatic(fee):
    excel_file = "stocklist.xlsx"
    data = pd.read_excel(excel_file)
    #print(data)
    L = data["Unnamed: 0"].tolist()
    print("Stock list generated:", L)
    p = []
    print("Transaction fee: ",fee*100, "%")
    print('----------------------------------------')
    for i in range(len(L)):
        p.append(float(stock_info.get_live_price(L[i])))
        print("Current price of "+L[i]+": ",p[i])
    print('----------------------------------------')
    return [L,p]

终端出现的错误是:

<ipython-input-35-df30698b28ab> in Automatic(fee)
    156     print("Transaction fee: ",fee*100, "%")
    157     print('----------------------------------------')
--> 158     for i in range(len(L)):
    159         p.append(float(stock_info.get_live_price(L[i])))
    160         print("Current price of "+L[i]+": ",p[i])

TypeError: 'int' object is not callable

编辑:当我执行 print(type(range)) 时,它 returns class 所以我想这就是问题所在,有人知道这个实例在包 xpress 中的位置吗?我没有为任何 int 变量分配名称“range”。

问题是xpress包定义了像leqgeqeqrange这样的常量来指定约束的类型( <=、>=、== 或范围)。 如果您只是从包中导入所有内容,那么这将用整数常量(在本例中为 4)覆盖 range 的内置定义。

所以最好通过像

这样的方式来限制你拉入命名空间的东西
from xpress import leq, geq, eq, problem

或者你需要的任何东西。我们只是做

import xpress as xp

并通过前缀 xp. 限定所有与 xpress 相关的内容。这样做的好处是可以立即清楚地知道您正在调用与 xpress 相关的函数。

正如 Daniel 所说,xpress 模块有一个 range 关键字,用于向优化模型添加范围约束。为避免混淆 Python 中的内置 range 关键字,从 Xpress Optimizer 模块的 8.13 版开始,xpress.range 关键字将被 xpress.rng.[=15= 取代]