Python: Dynamic Language

Strongly-typed? Dynamic?

  • Dynamic?
    • 静态类型:编译时就知道每个变量的类型,因为类型错误而不能做的事情是语法错误。
    • 动态类型:编译时不知道每个变量的类型,因为类型错误而不能做的事情是运行时错误。
      • 优点:
        • 更适合开发小的项目,无需声明类型。
        • 解除了很多束缚
          • duck typing: 动态类型的一种风格。
            • 在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。【“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”】
            • 没有了接口类型的继承约束。
            • 鸭子类型可以在不使用继承的情况下使用多态。(其实就是因为变量没有显式的类型)
      • 缺点:
        • 慢:编译器对于没有typing的变量,需要一个个check具体type
  • Strongly-typed?
    • 强类型语言:偏向于不容忍隐式类型转换。
    • 弱类型语言:偏向于容忍隐式类型转换。
  • python vs java?
    • python是动态强类型语言,java是静态强类型语言。
    • Python uses dynamic typing, which allows you to change the type of a variable, by replacing an integer with a string, for example.

跨平台

  • java跨平台性做的很好:一次编译,多次运行。