我学 Python 的时候也不习惯,写代码的时候总有种不安全的感觉,没关系,多写点 Python 代码就习惯了。
写 Python 个人推荐 PyCharm,对不遵守代码规范的写法有比较好的提示,适合初学者养成优秀的代码习惯。
多说两句。
显式声明类型与隐式声明类型的语言各有优劣,与语言的设计和定位,以及历史因素都有关系。
像 C/C++、Java 诞生的年代,编译器非常弱,不能在编译期做太多类型推断。为了帮助编译器做静态类型检查,才要求定义变量的时候显式声明类型。此外,在用继承实现多态的语言里,显式声明类型也是定义多态变量的方式。
现在一些比较新的语言,像 JVM 平台上的 Kotlin、Scala,以及 Rust、Go 等等,很多都采取了 静态强类型 + 隐式声明类型 的设计。比如在 Kotlin 里:
val a = 100 // a 自动推断为 Int 类型
Rust:
leta=100// a 自动推断为 i32 类型
这些新语言吸收了学术界有关类型推断的研究成果,能够在编译阶段推断出合适的类型。当然,推断的能力也还有限,无法完全摆脱显式类型声明。
对于 Python 这样的 动态强类型 + 隐式声明类型 语言来说,它并不希望程序员太关心变量是什么类型,是个变量你拿过来用就行。这样一来,虽然损失了一些类型安全,但也提高了语法的灵活性,让写 Python 代码更加舒服,开发效率更高,写出来的代码也更短。这种设计的坏处在于一句话:“动态类型一时爽,代码重构火葬场”,缺乏严谨带来的安全。