我更喜欢Python的语法糖;和标准库函数。
然而,我不喜欢的一个特征;是隐式输入。
是否存在带有显式输入的Python分布;哪个仍然兼容例如:PyPi上的包?
[我正在调查RPython]
答案 0 :(得分:3)
简短的回答是否定的。您要求的内容深深嵌入到Python中,并且无法在不改变语言的情况下进行更改,以至于不会成为Python。
我假设您不喜欢在重新分配时重新输入的变量?如果这是您的代码问题,您可以考虑其他方法来检查这一点。
答案 1 :(得分:3)
从python 3开始,使用类型注释的能力被引入到PEP 3017的python标准中。快进到python 3.5和 PEP 0484 构建于此基础上,引入类型提示和typing模块,使模块能够指定变量的类型或返回类型一个功能。
from typing import Iterator
def fib(n: int) -> Iterator[int]:
a, b = 0, 1
while a < n:
yield a
a, b = b, a + b
以上示例取自https://pawelmhm.github.io
根据484注释:
虽然这些注释在运行时可以通常使用 __annotations__属性,在运行时没有进行类型检查。相反,该提案假设存在单独的离线 用户可以自动运行其源代码的类型检查器。 从本质上讲,这种类型的检查器就像一个非常强大的linter。 (虽然个人用户当然可以使用 设计合同执行或JIT在运行时的类似检查程序 优化,这些工具尚未成熟。)
这意味着虽然python提供了这种静态类型&#34;的方法,但它并不在运行时强制执行,即当你运行程序时,python只是忽略你提供的任何类型规范并继续使用duck typing来推断类型。因此,您可以找到各种类型的lint检查器,您可以运行程序来检测类型的任何问题。
答案 2 :(得分:1)
不,你不能吃蛋糕和吃蛋糕。
Python很棒,因为它是动态输入的!期。 (这就是为什么它也有这么好的标准库)
静态类型语言只有2个优点1)速度 - 算法开始时是正确的,2)编译错误
至于1)
典型的只有10%或更少的代码是性能关键的。所有其他90%?享受动态打字的优势。
至于2)
典型的数据不符合标准数据类型,它们在允许存储的标准数据类型中过于严格或过于宽松。确保您自己验证数据。
单元测试必须用于算法测试,没有编译器可以为你做,并且应该捕获由错误的数据类型引起的任何问题(并且与编译器不同,它们的粒度与你需要的一样)
当您不确定给定的更改是否会破坏您的代码时,重构可以解决所有这些问题(同样,强类型数据也无法保证这一点。)
好的代码编辑器可以解决很多问题......使用Sublime Text一段时间。然后你会知道我的意思。
(可以肯定的是,我不会给你答案你想要的。但我会质疑你的需求,尤其是那些你没有包含在你的问题中的需求)
答案 3 :(得分:-2)
由于评论有限......
作为一种解释型语言,Python的定义是弱类型的。这对于程序员来说可以预先防范潜在的语法错误并不是一件坏事,但实际上这不会阻止逻辑错误的发生,从而使得这一点毫无意义。
尽管paper on RPython使其成为重点,但它主要关注面向对象编程。你必须记住,Python更像是OOP和功能编程的融合,也可能是其他的。
我鼓励reading of this page,这是非常有益的。