首页 > 解决方案 > 是否可以在 python 函数中强制数据不变性?

问题描述

假设我定义了一个列表对象,并且只希望它在我定义的函数中是只读的。在 C++ 中,您可以使用 const 引用来执行此操作。有没有办法用python函数做到这一点?这对于编写“pythonic”代码是否有意义,或者我只是试图错误地应用 C++ 范例?

标签: pythonimmutability

解决方案


使用tuple, 代替:

>>> hash([1,2,3])
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    hash([1,2,3])
TypeError: unhashable type: 'list'
>>> hash((1,2,3))
2528502973977326415
>>> 

hash可以定义它是否可变,并产生一个TypeError: unhashable type如果它是可变的错误,例如lists,OTOHtuple会返回一些大数字(在这种特殊情况下不需要关心),try except如果你想我们可以使用a:

try:
    hash((1,2,3))
    print('Immutable object')
except:
    print('Mutable object')

哪个输出:

Immutable object

推荐阅读