文:《Python外部函数的静态类型推断》
1、静态类型语言 vs 动态类型语言
(1)动态类型语言(Dynamically Typed Language)
动态类型在解释语言中极为普遍,如 Go、JavaScript、Perl、Python、Ruby 等等。
所谓动态类型语言,就是类型的检查是在运行时
才做。
类型对于变量,属性,方法以及方法的返回类型都是可有可无的,在给变量赋值时才决定它的类型, 之后,还可以赋值不同类型的值,即使是基本类型,比如 C# 装箱(boxing)和拆箱(unboxing),可以把值类型转换成引用类型,引用类型转换成值类型。当需要时,很多类型之间都会发生自动转换,可以把不同的基本类型添加到同一数组(collections)中。
(2)静态类型语言(Statically Typed Language)
静态类型语言常出现于编译语言中,如 C、C++、C#、Java
静态类型语言的类型检查是在运行前的编译阶段
。
(3)对比
语言类型 | 特点 | 优点 | 缺点 |
---|---|---|---|
静态类型语言 | 强类型 ,外部函数声明时带有显式类型 ,为了达到多态会采取一些类型鉴别手段,如继承、接口 |
结构非常规范 ,便于调试 ,类型安全 ;编译的时候就可以 较早发现错误 ,而且还可增进运行时期的性能 。 |
需要写更多的类型相关代码(如声明变量),不便阅读(特别是,当你看别人代码时,会连变量定义也看吗?想必不会,看结构,看方法的含义想必才是本质)。 |
动态类型语言 | 自由形式 ,一般会采用推断类型(鸭子类型,Duck typing) |
方便阅读 ,不需要写非常多的类型相关代码;使用更加动态的类型系統, 分析代码更为简单,减少出错机会 ,才能更加轻松快速的编程 。 |
不便调试,命名不规范时会造成读不懂,不利于理解等。 |
参考:
https://www.cnblogs.com/liuning8023/p/4286044.html
2、类型【可参考】
我的 | 本论文 |
---|---|
list,复合类型_聚合 | 积类型pProduct,表示list,tuple,dict等类型。 |
type,共用体类型【后期加】,包括Union、宏、include等 | 共用体类型pUnion,支持C侧Union这一常见的语言特征。 |
?【参考】 | 对象类型pObject,针对module、iterator等,不在类型集合中,传递给外部函数时会被作为object对象处理。 |
标签:毕设,语言,静态,代码,类型,动态,变量 来源: https://www.cnblogs.com/sybil-hxl/p/15907063.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。