2016-12-15 5 views
2

fooの可変性と不変性についての私の理解は、idを変更せずにfooprintを使用)のように見える方法を変更する方法がある場合、fooは変更可能です。そうでなければ、それは不変です。Pythonでその関数が変更可能であることをどのように表示しますか?


たとえば、あなたは、listため

foo = [1, 2, 3] 
print(foo, id(foo)) 
foo[0] = 100 
print(foo, id(foo)) 

しかしintための方法はありませんが、これを行うことができます。


機能はどうですか?まず第一に、上に与えられた私の可変性と不変性の定義は正しいのですか?はいの場合、それが可変であることを証明するためにidを変更せずに機能を突然変異させる方法を見つけることができますか?

答えて

1

あなたは明示的にそのIDに影響を与えることなく、機能のコードを変更することができます(ここでは、コード使用のpython 2.7である):

>>> def f(): 
...  print "f" 
... 
>>> def g(): 
...  print "g" 
... 
>>> id(f) 
140305904690672 
>>> f() 
f 
>>> f.func_code = g.func_code 
>>> id(f) 
140305904690672 
>>> f() 
g 
関連する問題