gpt4 book ai didi

python - 为什么 Python 中没有 'const'?

转载 作者:IT老高 更新时间:2023-10-28 21:48:02 27 4
gpt4 key购买 nike

我来自 C 背景,正在学习 Python。缺乏明确的类型安全令人不安,但我已经习惯了。面对动态语言的所有优势,缺乏内置的基于契约的编程(纯抽象类、接口(interface))是需要习惯的。

但是,无法请求 const-cortectness 让我抓狂!为什么 Python 中没有常量?为什么是 class-level constants灰心?

最佳答案

C 和 Python 属于两种不同的语言。

前者是静态类型的。后者是动态的

在静态类型语言中,类型检查器能够推断每个表达式的类型,并在“编译”阶段检查它是否与给定声明匹配。

在动态类型语言中,所需的类型信息直到运行时才可用。并且表达式的类型可能因一次运行而异。当然,您可以在程序执行期间添加类型检查。这不是在 Python 中做出的选择。这具有允许“鸭子打字”的优势。缺点是解释器无法检查类型的正确性。

关于 const 关键字。这是一个类型修饰符。限制允许使用的变量(有时修改允许的编译器优化)。在运行时检查动态语言的效率似乎很低。在第一次分析中,这意味着要检查一个变量是否为 const 或不是每个做作。这可以进行优化,但即便如此,这样做是否值得?

除了技术方面,不要忘记每种语言都有自己的理念。在 Python 中,通常的选择是支持“约定”而不是“限制”。例如,常量应该全部大写。没有技术强制执行。这只是一个约定。如果您遵循它,您的程序将按照“其他程序员”的预期运行。如果您决定修改“常量”,Python 不会提示。但是应该觉得你在做“错事”。你打破了约定。也许你有你这样做的理由。也许你不应该有。你的责任。

最后一点,在动态语言中,程序的“正确性”更多地是单元测试的责任,而不是编译器的责任。如果你真的很难做到这一步,你会发现一些“代码检查器”。那些是PyLint , PyChecker , PyFlakes ...

关于python - 为什么 Python 中没有 'const'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com