收藏本站
《南京大学》 2015年
收藏 | 手机打开
二维码
手机客户端打开本文

Python静态类型分析及其应用

董天聪  
【摘要】:Python作为一种面向对象的动态类型语言,因其语法简单、有一组功能完备的标准库,且能轻松完成很多常见任务,而被越来越广泛地使用。但是,由于采用动态类型系统,Python虚拟机在程序运行时才会进行类型检查,在编译时不会检查对象是否拥有被调用的方法或属性,这就导致Python无法在编译时进行类型错误检查,也无法提供显式的类型信息以及当前变量拥有的属性和方法。为了解决上述问题,本文提出并实现了针对Python程序的静态类型分析方法,并将其应用于程序的编译时类型错误检查。该方法是一套完整的解决方案,包括定义完备的类型标注系统,将类型信息进行抽象和封装,并将类型组织起来;对源程序进行预处理,转换为中间形式;对预处理后的程序进行类型注释,并对内置模块、类、方法等进行模拟和注释;采用基于约束图的类型推导算法,将程序规约到标注系统中,从而得到程序中每个变量的类型信息。使用这些类型信息,可以对程序进行类型错误检查,并集成于IDE中辅助程序开发,本文通过案例说明了如何进行类型错误检查。本文选取了标准库和Github上的开源程序作为实验对象,统计了本文方法的时间开销,以及变量类型集合的分布、注释率、召回率和准确率等信息,验证了本文方法的有效性。本文主要包括以下工作:第一,通过对源程序进行预处理构建底层框架。将Python中复杂的语法元素转换为简单形式,同时将复杂的语句转换为一组等价的简单语句,将程序中变量、控制结构等程序信息保存在特定数据结构中,并为上层的分析工作提供接口。第二,构建了完备的类型标注系统,类型标注系统抽象并封装了类型信息、类型间的关系以及类型支持的操作,通过类型注释与类型推导将Python源程序规约到此类型标注系统中。第三,通过类型注释和类型推导,获取类型信息,并对内置模块、类、函数等进行模拟和注释。在类、函数等定义时进行类型注释,同时Python解释器中集成了大量使用C语言实现的内置模块、类、函数等,在Python程序中可以引用这些内置模块和函数,但无法分析其类型信息,所以本文使用Python模拟了这些内置模块的实现,并对其进行类型注释。采用基于约束图的类型推导算法,迭代扫描程序的每条语句,构造变量间的类型约束图,在变量类型集合变化时通过约束图传播,推导出变量的类型集合。第四,进行编译时的静态类型错误检查;同时提供给开发人员程序中每个变量的属性、方法,辅助开发。本文采用基于约束的类型错误检查算法,通过定义约束、使用自动化算法生成约束、应用错误检查算法,检测表达式匹配错误、函数调用错误、可用属性错误等类型错误。
【学位授予单位】:南京大学
【学位级别】:硕士
【学位授予年份】:2015
【分类号】:TP312.1

手机知网App
【参考文献】
中国期刊全文数据库 前1条
1 余超;周天琳;周晓宇;陈林;徐宝文;;TPython:一种扩充的Python语言[J];计算机与数字工程;2009年05期
【相似文献】
中国期刊全文数据库 前10条
1 闯跃龙;郭文平;;面向非计算机专业学生的Python教学内容设计[J];台州学院学报;2018年03期
2 汪琴;李明;;谈树莓派在学生创新教育中的应用[J];中国信息技术教育;2017年05期
3 姚建盛;李淑梅;;Python在科学计算中的应用[J];数字技术与应用;2016年11期
4 钱程;阳小兰;朱福喜;;基于Python的网络爬虫技术[J];黑龙江科技信息;2016年36期
5 戚利娜;刘建东;;基于Python的简单网络爬虫的实现[J];电脑编程技巧与维护;2017年08期
6 谢克武;;大数据环境下基于python的网络爬虫技术[J];电子制作;2017年09期
7 平凯珂;陈平雁;;Python与R语言联合应用的实现[J];中国卫生统计;2017年02期
8 史梦楚;;Python语言的探讨[J];中国新通信;2017年07期
9 贾棋然;;基于Python专用型网络爬虫的设计及实现[J];电脑知识与技术;2017年12期
10 肖胜刚;袁方;安海宁;;Python课程助力计算思维和创新能力培养[J];计算机教育;2017年09期
中国重要会议论文全文数据库 前10条
1 黄佳聪;高俊峰;;基于Python编程语言的空间动态模型集成[A];自然地理学与生态安全学术论文摘要集[C];2012年
2 连高欣;;Python语言在Cimiss中的应用[A];第35届中国气象学会年会 S20 深度信息化:应用支持与智能发展[C];2018年
3 王亚东;;Python在气象数据可视化中的应用[A];第34届中国气象学会年会 S20 气象数据:深度应用和标准化论文集[C];2017年
4 ;Development of Python-based ArcGIS Tools for Spatially Balanced Forest Sampling Design[A];Information Technology and Computer Science—Proceedings of 2012 National Conference on Information Technology and Computer Science[C];2012年
5 陈琳;任芳;;基于Python的新浪微博数据爬虫程序设计[A];第33届中国气象学会年会 S13 “互联网+”与气象服务——第六届气象服务发展论坛[C];2016年
6 高绵新;;基于Python的ArcGIS脚本工具在DEM精细化生产中的应用[A];全国测绘科技信息网中南分网第三十次学术信息交流会论文集[C];2016年
7 于文丽;;基于Python的空间自相关模式研究[A];中国地理学会百年庆典学术论文摘要集[C];2009年
8 刘啸虎;赵云梦;金磊;赵兴;;一种针对MQTT协议的测试系统设计与开发[A];2017年中国家用电器技术大会论文集[C];2017年
9 孙建立;贾卓生;;基于Python网络爬虫的实现及内容分析研究[A];中国计算机用户协会网络应用分会2017年第二十一届网络新技术与应用年会论文集[C];2017年
10 王世华;沈卫超;;用Python和wxPython开发主机安全监控系统[A];第二十次全国计算机安全学术交流会论文集[C];2005年
中国重要报纸全文数据库 前9条
1 ·特约作者 邹肇辉;BT编程的王者[N];电脑报;2005年
2 高寿福;无所不能的灵蛇——Python[N];中华读书报;2001年
3 本报记者 王延斌;小学教育应有Python一席之地[N];科技日报;2018年
4 易水;IT新词集锦(403)[N];计算机世界;2004年
5 Christina Mercer 编译 杨勇;2018年的主要IT技术:最需要、增长最快的IT技术[N];计算机世界;2018年
6 ;Ruby on Rails[N];计算机世界;2006年
7 中国信息通信研究院泰尔终端实验室 曾晨曦 段虎才;深度学习框架的前世今生[N];人民邮电;2018年
8 本报记者 原竟格;建设安全文化 确保平稳运营[N];中国石油报;2016年
9 国家计算机网络与信息安全实验室 鲁松;Icon:回归编程的简单和快乐[N];计算机世界;2002年
中国博士学位论文全文数据库 前2条
1 徐兆桂;Python程序缺陷的自动检测与定位技术[D];南京大学;2017年
2 张幂;基于动态语言的系统描述、验证和综合[D];复旦大学;2009年
中国硕士学位论文全文数据库 前10条
1 刘原铭;基于Python的中小学云课堂平台设计与实现[D];北京交通大学;2018年
2 韩辉;基于Python的私募量化平台的设计与实现[D];浙江工业大学;2018年
3 董天聪;Python静态类型分析及其应用[D];南京大学;2015年
4 张凯姣;基于Python机器学习的可视化麻纱质量预测系统[D];东华大学;2017年
5 王鸣;基于Python的自动化测试脚本管理平台的设计与实现[D];华中科技大学;2016年
6 王小强;基于操作码的Python程序防逆转算法研究与实现[D];中国科学技术大学;2017年
7 徐彩霞;基于Python的CLI自动化测试方法的研究与实现[D];东华大学;2017年
8 黎爽;基于Python科学计算包的金融应用实现[D];江西财经大学;2017年
9 米也塞·艾尼玩;基于Python的维吾尔文文本聚类系统设计与实现[D];新疆大学;2012年
10 孔德民;基于Python开发预警机系统检测设计与研究[D];哈尔滨理工大学;2017年
中国知网广告投放
相关机构
>南京大学
相关作者
>徐兆桂
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62791813
  • 010-62985026