0

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

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

编辑:当我打印(类型(范围))时,它返回类,所以我想这就是问题所在,有谁知道这个实例在包 xpress 中的位置?我没有为任何 int 变量分配名称“范围”。

4

2 回答 2

0

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

因此,最好通过执行类似的操作来限制您拉入命名空间的内容

from xpress import leq, geq, eq, problem

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

import xpress as xp

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

于 2021-06-22T11:24:41.133 回答
0

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

于 2021-09-20T16:42:14.547 回答