Discuss / Python / 到底什么叫做动态语言呢?

到底什么叫做动态语言呢?

Topic source

哪位大佬能用通俗易懂的话解释一下“动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。”?

举的那个Hello的Class对象的例子,也没看懂哪里体现了”动态”。

我目前的理解是:type()可以返回一个对象的类型。例如,我们已经创建了一个叫做Hello的class,就可以用type(Hello)来返回Hello的类型。type()也可以用来创建新的class,例如

Hello = type('Hello', (object,), dict(hello=fn))

就创建了一个名为Hello的object类型,且调用了fn这个函数方法。所以type()既可以返回对象类型,也可以新建对象,就是一种动态的语言?

我说说我的理解。

静态语言需要整体编译,比如java得先把.java编译成.class,在编译完成的时候类的方法和属性就确定了,虽然运行中也可以改,但很麻烦(一般是不改的)。

动态语言是动态编译的,可以理解为编译一行运行一行,所以完全可以根据实际输入的不同去动态的更改类的方法和属性。

你最后举的例子,应该是方法重载,这在静态语言里也是有的。

静态语言要再编译时进行类型检查,所以编译时就要确定类型信息,也就是编译时就要定义类。

动态语言不需要,所以可以等到运行时再确定类型信息,也就是在运行时动态创建。

谢谢!


  • 1

Reply