【问题标题】:How do I show that function is mutable in Python?如何证明该函数在 Python 中是可变的?
【发布时间】:2017-04-30 13:13:03
【问题描述】:

我对 Python 中的可变性和不变性的理解是,假设我们有一个变量 foo,如果有一种方法可以改变 foo 的外观(通过使用 print)而不改变其 id,那么foo 是可变的。否则,它是不可变的。


例如,您可以为list 执行此操作,

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

int没有办法。


但是功能呢?首先,我上面给出的可变性和不变性的定义是否正确?如果是的话,你能找到一种方法来改变函数而不改变它的id 以证明它是可变的吗?

【问题讨论】:

    标签: python function types immutability mutable


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-12
      • 2017-07-08
      • 2015-08-24
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2016-03-01
      相关资源
      最近更新 更多