Vor*_*rac 37 python const const-correctness
我来自C背景,正在学习Python.缺乏明确的类型安全性是令人不安的,但我已经习惯了.面对动态语言的所有优点,缺乏内置的基于合同的编程(纯抽象类,接口)是习惯的东西.
然而,无法请求const-cortectness让我发疯!为什么Python中没有常量?为什么不鼓励类级常量?
Syl*_*oux 22
C和Python属于两种不同的语言.
前一个是静态类型.后者是动态的.
在静态类型语言中,类型检查器能够推断每个表达式的类型,并在"编译"阶段检查它是否与给定的声明匹配.
在动态类型语言中,所需的类型信息在运行时才可用.并且表达式的类型可能因一次运行而异.当然,您可以在程序执行期间添加类型检查.这不是 Python的选择.这有利于允许"鸭子打字".缺点是解释器无法检查类型的正确性.
关于const关键字.这是一个类型修饰符.限制允许使用变量(有时修改允许的编译器优化).在运行时检查动态语言似乎效率很低.首先分析,这意味着要检查变量是否为每个符号的常量.这可以进行优化,但即便如此,它是否值得获益?
除技术方面外,不要忘记每种语言都有自己的理念.在Python中,通常的选择是支持"约定"而不是"限制".例如,常量应拼写在所有大写字母中.没有技术执法.这只是一个惯例.如果您遵循它,您的程序将按照"其他程序员"的预期运行.如果您决定修改"常量",Python不会抱怨.但你应该觉得你做的"做错了".你打破了一个惯例.也许你有理由这样做.也许你不应该.你的责任.
最后要注意的是,在动态语言中,程序的"正确性"更多地是单元测试的责任,而不是编译器的责任.如果你真的有困难迈出这一步,你会发现一些"代码检查器".那些是PyLint,PyChecker,PyFlakes ......
归档时间: |
|
查看次数: |
16863 次 |
最近记录: |