【问题标题】:Can you overwrite a variable that is defined by the result of a function without clearing first in python?你可以覆盖一个由函数结果定义的变量而不先在python中清除吗?
【发布时间】:2013-03-29 23:33:10
【问题描述】:

所以,我想知道是否有一种方法可以一步清除和覆盖/重写变量,而无需事先清除它。

这就是我的例子:

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

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

【问题讨论】:

标签: python function variables python-2.7 overwrite


【解决方案1】:

您不需要清除第二个示例中的变量。删除该行,看看程序是否仍然有效。

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

a = 2 * 4

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

a = "hello"

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

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

【讨论】:

  • 我的意思是把它写在代码块中,所以我很抱歉。在循环内的 rate 函数中,我这样实现: rate(ti + h*i,w) ,其中“ti”是定义的 time_initial 值。我的程序中也定义了一个“tf”(time_final)。
  • 我扩展了我的答案来回答你的问题。
【解决方案2】:

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

提示:使用 sum 以外的其他变量名,Python 已经使用它...

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多