1.什么是Python
- 解释型、面向对象、动态数据类型、强类型的高级程序设计语言
- 解释型与编译型:
- 解释型在每次运行时都通过解释器生成机器码,编译型在一次编译后生成可执行文件,之后运行可执行文件无需再次编译。
- 解释型运行效率低,编译型效率高
- 由于针对不同平台系统有不同解释器,所以解释型语言跨平台能力很强;编译型语言生成的可执行文件跨平台能力弱,并且语言本身的可移植能力弱
- 面向对象与面向过程
- 面向对象更强调易维护、易复用、易扩展,以封装、继承、多态性的特点设计低耦合系统,但由于实例化的开销大,性能低
- 动态数据类型:无需提前定义变量类型,变量类型由所指向数据类型决定,可以随着指向数据的改变而改变
- 强类型:不允许数据类型的隐式转换(如弱类型语言中一个int类型的数据与一个float类型的数据相加,最终的结果是一个float类型的数据)
- 高级语言:机器语言——汇编语言(不独立于机器)——C语言——高级语言(为用户提供了一种既接近与自然语言,又可以使用数学表达式,还相对独立于机器的工作方式。与汇编语言一样,机器也不能直接执行用高级语言编写的程序。)
2.python的特点
- 解释型:运行前无需编译,跨平台可移植,效率低
- 动态类型:无需提前指定变量类型
- 面向对象:组合与继承方式定义类
- 编写容易,运行速度低于编译语言
- 用途广泛的胶水语言,可帮助其他语言和组件改善运行状况
- 不必处理底层细节,可以专注于算法和数据结构的设计
3.python2和python3的主要区别
- python3不向后兼容的原因:解决一些历史遗留问题(字符编码问题、命名混乱问题、标准库包的放置位置不合理问题、new-style class 和 old-style class 不统一问题)
- python2.6:平缓过度版本(基本使用2的语法和库,支持部分3的语法和函数)
- print:用print()函数取代print语句
- 编码:默认UTF-8编码支持中文(变量命名也可以是中文)代替ASCII编码
- 除法:整数相除也可以得到浮点数代替向下取整
- 异常:
- 捕获:从except exc,var变成except exc as var
- 抛出:只有继承自BaseException的对象才能被抛出
- 功能:变得更加专一,只有错误发生才能用异常处理语句处理,不能进行普通结构控制了
- 八进制:去掉01000形式,只保留0o1000形式
- 使用range完全代替xrange
- 不等运算符:只保留!=,取消了<>
- 去除rerp表达式``(使代码看上去更清晰)
- 整形:去掉了long类型,只保留int整形
- 输入:去除raw_input函数,只保留input函数
- 缩进:tab缩进和space缩进可单独使用,但不可以共存
- 打开文件:方式只保留open,去除了file
- map和filter从函数变成了类,返回结果从列表变成可迭代对象
- reduce函数从内置函数挪到了functools模块