当前位置: 首页 > news >正文

python简介常考面试题目:python是什么,有什么好处,python2和python3的主要区别

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模块

相关文章:

  • SpringCloud Stream消息驱动
  • JVisualVM 中线程状态(运行/休眠/等待/驻留/监视)解析
  • 常识——绳结打折法
  • AVL树的特性和模拟实现
  • java剧院售票系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • SpringBoot-36-分布式理论概述
  • 第一章 Linux及Linux Shell简介
  • http客户端Feign
  • SpringBoot-37-RPC概述
  • tensorflo之keras高层接口
  • OpenCV图像处理学习二十一,直方图比较方法
  • 第5章 总体设计【软件设计一般分为总体设计和详细设计,它们之间的关系是全局与局部】
  • java开放式教学评价管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • define宏定义和const的区别
  • 电量优化 - Hook 系统服务
  • python3.6+scrapy+mysql 爬虫实战
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • C++类中的特殊成员函数
  • ES6语法详解(一)
  • es的写入过程
  • Javascript基础之Array数组API
  • Java深入 - 深入理解Java集合
  • passportjs 源码分析
  • Sass 快速入门教程
  • SQLServer之创建数据库快照
  • Tornado学习笔记(1)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 区块链将重新定义世界
  • 全栈开发——Linux
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 从如何停掉 Promise 链说起
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ![CDATA[ ]] 是什么东东
  • # .NET Framework中使用命名管道进行进程间通信
  • #define用法
  • ${factoryList }后面有空格不影响
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (rabbitmq的高级特性)消息可靠性
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (第二周)效能测试
  • (九十四)函数和二维数组
  • (六)激光线扫描-三维重建
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (万字长文)Spring的核心知识尽揽其中
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Core 项目指定SDK版本
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 流——流的类型体系简单介绍
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net6 webapi log4net完整配置使用流程