以下のコードでは:
>>> a=10
>>> b=10
>>> c=10
>>> D=a+b+c
>>> D
30
>>> a=5
>>> D
30
D には行 4 の値が割り当てられているため、明示的に変更しない限りその値が保持されることを理解しています (例: D=33
)。D
しかし、私は、いつ、a, b,
または変化するかを変更するインタラクティブを持ちたいと考えていc
ます。この問題にどのようにアプローチしますか?
a=10
b=10
c=10
def D():
return a+b+c
print D()
a=1
print D()
私が考えることができる最も簡単な解決策は、クラスによるものです。あまり一般的ではありませんが、あなたの質問に合う例を次に示します。
class InteractiveSumOf3Variables(object):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def get_value(self):
return self.a+self.b+self.c
D = InteractiveSumOf3Variables(10,10,10)
print D.get_value()
>>> 30
D.a = 5
print D.get_value()
>>> 25
You can either use a generator or a function in either as a named (as suggested by the previous answers) or as an anonymous lambda
>>> from itertools import count
>>> foo_D = lambda : a + b + c #Lambda
>>> gen_D = (a+b+c for _ in count()) #generator expression
>>> a = 1
>>> b = 2
>>> c = 3
>>> next(gen_D)
6
>>> c = 4
>>> next(gen_D)
7
>>> foo_D()
7
>>> c = 3
>>> foo_D()
6