你能覆盖一个由函数结果定义的变量而不先在python中清除吗?

时间:2013-04-08 00:59:21

标签: python function variables python-2.7 overwrite

所以,我想知道是否有办法在一步中清除和覆盖/重写变量,而不必事先清除它。

这就是我的例子:

def rate(t,w):
    return (t + cos(t))

sum = 0
for i in range(k):
    sum += rate(t+h*i,w)

print sum

但是如果我想以不同的方式重用这个函数,我必须首先清除“sum”变量。如果可能的话,我想摆脱那一步。

sum = 0                   # I want to combine this step
sum = rate(t,w)/2         # and this one.
for i in range(1,k):
    sum += rate(t+h*i,w)

print sum

这可能吗? (顺便说一句,所有这些代码都在同一份文件中。)

2 个答案:

答案 0 :(得分:7)

您无需在第二个示例中清除变量。删除该行,并看到该程序仍然有效。

在Python中,赋值(=)运算符将名称绑定到对象:

a = 2 * 4

在此行中,计算2 * 4创建一个值为int的对象。=运算符然后将其绑定到名称a。您可以根据需要多次重复使用该名称:

a = "hello"

名称a现在绑定到值为“hello”的str对象。上一行代码中的int将在不再使用时自动删除。

“将名称绑定到对象”这一概念导致Python与其他语言之间行为的细微差别,这些差异将变量视为可以用值填充的“桶”。

答案 1 :(得分:1)

您不一定要将其设置为0,因为通过使用“sum =”,它会重新定义变量,而不会保留上次分配的信息。

提示:使用除sum之外的另一个变量名,Python已经使用它......