python - 为什么 Python 决定不使用常量引用?

标签 python reference constants language-design language-features

注意:我不是在谈论防止重新绑定(bind)变量。我说的是防止修改变量引用的内存,以及通过跟随嵌套容器可以从那里访问的任何内存。

我有一个大型数据结构,我想以只读方式将其公开给其他模块。在 Python 中做到这一点的唯一方法是深度复制我想公开的特定部分——在我的情况下非常昂贵。

我确信这是一个非常常见的问题,并且似乎恒定引用将是完美的解决方案。但我一定是错过了什么。也许常量引用很难在 Python 中实现。也许他们并没有完全按照我的想法去做。

我们将不胜感激。


虽然答案很有帮助,但我还没有看到为什么 const 在 Python 中难以实现或不可行的单一原因。我猜“un-Pythonic”也可以算作一个正当理由,但真的是这样吗? Python 确实会对私有(private)实例变量进行加扰(以 __ 开头)以避免意外错误,而 const 在本质上似乎并没有那么不同。


编辑:我只是提供了一个非常有限的赏金。我正在寻找更多关于为什么 Python 最终没有 const 的细节。我怀疑原因是很难实现完美工作。我想知道为什么这么难。

最佳答案

与私有(private)方法相同:as consenting adults代码的作者应该在不需要强制的情况下就接口(interface)达成一致。因为真的真的执行契约(Contract)是困难,而且半途而废会导致大量的黑客代码。

使用 get-only 描述符,并在您的文档中明确说明这些数据意味着是只读的。毕竟,一个坚定的编码员可能会找到一种方法来以您认为的不同方式使用您的代码。

关于python - 为什么 Python 决定不使用常量引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192053/

相关文章:

python - Python 中哪个类首先执行?

python - 如何在打包时给 python 模块起别名?

c - C中常量指针和常量指针的区别

c++ - 如何处理模板化代码中的变量const?

python - 找出给定对象的可用属性(和方法)的最佳方法是什么?

python - 如何将带有参数的函数作为参数传递给Python中的另一个函数(函数名作为字符串)?

c++ - 重建一个通过引用发送的变量

c++ - 通过引用传递 "advanced"概念?

c++ - 避免在 unordered_map 插入中进行额外处理

c++ - 编译器警告 "Effective C++"s 方法以避免 const 和非 const 成员函数中的重复