変数aにイミュータブルな値を代入し、aを含む式を変数bに代入したとします。
その後aに別の値を代入しても、bの値はそのままになってしまいます。
python3
1>>> a = 1 2>>> b = a 3>>> a = 2 4>>> print(a,b) 52 1
bを関数にすればaの値をbに反映できます。
python3
1>>> def b(arg = a): 2... return arg 3>>> a = 1 4>>> print(b()) 51 6>>> a = 2 7>>> print(b()) 82
ここで質問なのですが、bを関数b()の形ではなく変数のような形bで書いたうえで、aの値を毎回反映させることはできますか?
つまり下のような感じです。
python3
1>>> a = 1 2>>> #何かbについての定義 3>>> print(b) 41 5>>> a = 2 6>>> print(b) 72
これができると今書いているコードが綺麗に整理できて嬉しいです。
関数の形だと毎回()を書く必要があり結構面倒に感じてしまいました。
なんで"bという名前を付けたい"んですか?
"aを変えたら常にbも変わる"なら、"bという名前を付ける意味がまったくない"というのが素直な感覚だと思いましたが。
文中の例は質問用に簡略化した状況で、実際上はbはaそのものではなくaの値によって一意に計算できる値を持たせることを想定していました。(質問文1行目の「aを含む式」はその気分で書きました。)
b = aとする場合で可能ならそれより複雑な状況でも同様のはず、と考えてこの形で投稿した次第です。確かに質問を普通に読めばご指摘の通りでした。
要は「関数の括弧を書くのが面倒なので、書かなくて済んでる風にできないか」というのが質問意図です。
回答1件
あなたの回答
tips
プレビュー