+= Python 中的运算符

+= Operator in Python

我来自类 C 语言世界,Python 一直让我惊叹不已。我意识到我不知道 += 运算符在 Python 中是如何工作的。在 C-like 中,如果我对一个整数变量执行 +=,结果是 integer:

int a = 1
a += 1;
print(a) // will be 2

但我在 Python 中有以下程序(了解它在做什么并不重要,只需检查 += 运算符及其操作的类型):

# cost of factories
from pulp import *
cf0 = 450
cf1 = 420
cf2 = 400

# factory throughput
f0 = 2000
f1 = 1500
f2 = 1000

# production goal
goal = 80000

# time limit
max_num_days = 30

problem = LpProblem("computerAssembly", LpMaximize)

f0days = LpVariable.dicts("f0eachDay", list(range(max_num_days)), cat="Binary")
f1days = LpVariable.dicts("f1eachDay", list(range(max_num_days)), cat="Binary")
f2days = LpVariable.dicts("f2eachDay", list(range(max_num_days)), cat="Binary")

produced = 0
cost = 0

for i in range(max_num_days):

    # only 2 active per day constraint
    problem += f0days[i] + f1days[i] + f2days[i] <= 2

    # sum up what was produced
    produced += f0days[i]*f0 + f1days[i]*f1 + f2days[i]*f2

    # objective
    cost += f0days[i]*cf0 + f1days[i]*cf1 + f2days[i]*cf2

problem += produced >= goal
problem += -cost

problem.solve()

print(problem)

# print("Problem solved: ", problem.status())

print("Problem solved")
# print(str(problem.status()))

for day in range(max_num_days):
    print("Day configuration: {}-{}-{}".format(
        int(f0days[i].varValue), int(f1days[i].varValue), int(f2days[i].varValue)))

现在,当我打印问题时(这只是一个摘录)

MAXIMIZE
-450*f0eachDay_0 + -450*f0eachDay_1 + -450*f0eachDay_10 + -450*f0eachDay_11 +
 -450*f0eachDay_12 + -450*f0eachDay_13 + -450*f0eachDay_14 + -450*f0eachDay_15 +
 -450*f0eachDay_16 + -450*f0eachDay_17 + -450*f0eachDay_18 + -450*f0eachDay_19 + 
-450*f0eachDay_2 + -450*f0eachDay_20 + -450*f0eachDay_21 + -450*f0eachDay_22 + 
-450*f0eachDay_23 + -450*f0eachDay_24 + -450*f0eachDay_25 + -450*f0eachDay_26 + 
-450*f0eachDay_27 + -450*f0eachDay_28 + -450*f0eachDay_29 + -450*f0eachDay_3 + 
-450*f0eachDay_4 + -450*f0eachDay_5 + -450*f0eachDay_6 + -450*f0eachDay_7 + 
-450*f0eachDay_8 + -450*f0eachDay_9 + -420*f1eachDay_0 + -420*f1eachDay_1 + 
-420*f1eachDay_10 + -420*f1eachDay_11 + -420*f1eachDay_12 + -420*f1eachDay_13 + 
-420*f1eachDay_14 + -420*f1eachDay_15 + -420*f1eachDay_16 + -420*f1eachDay_17 + 
-420*f1eachDay_18 + -420*f1eachDay_19 + -420*f1eachDay_2 + -420*f1eachDay_20 + 
-420*f1eachDay_21 + -420*f1eachDay_22 + -420*f1eachDay_23 + -420*f1eachDay_24 + 
-420*f1eachDay_25 + -420*f1eachDay_26 + -420*f1eachDay_27 + -420*f1eachDay_28 + 
-420*f1eachDay_29 + -420*f1eachDay_3 + -420*f1eachDay_4 + -420*f1eachDay_5 + 
-420*f1eachDay_6 + -420*f1eachDay_7 + -420*f1eachDay_8 + -420*f1eachDay_9 + 
-400*f2eachDay_0 + -400*f2eachDay_1 + -400*f2eachDay_10 + -400*f2eachDay_11 + 
-400*f2eachDay_12 + -400*f2eachDay_13 + -400*f2eachDay_14 + -400*f2eachDay_15 + 
-400*f2eachDay_16 + -400*f2eachDay_17 + -400*f2eachDay_18 + -400*f2eachDay_19 + 
-400*f2eachDay_2 + -400*f2eachDay_20 + -400*f2eachDay_21 + -400*f2eachDay_22 + 
-400*f2eachDay_23 + -400*f2eachDay_24 + -400*f2eachDay_25 + -400*f2eachDay_26 + 
-400*f2eachDay_27 + -400*f2eachDay_28 + -400*f2eachDay_29 + -400*f2eachDay_3 + 
-400*f2eachDay_4 + -400*f2eachDay_5 + -400*f2eachDay_6 + -400*f2eachDay_7 + 
-400*f2eachDay_8 + -400*f2eachDay_9 + 0

它神奇地知道我在以下行中进行的每项操作:cost += f0days[i]*cf0 + f1days[i]*cf1 + f2days[i]*cf2

为什么 cost += f0days[i]*cf0 + f1days[i]*cf1 + f2days[i]*cf2 不会生成整数,但它实际上会记住每一个操作?

谢谢

没关系,我在这里找到了答案:

https://realpython.com/linear-programming-python/

所有运算符都已重载。