刚刚开始学习python这门编程语言,考虑到python不同版本的一些用法不同,收集整理了一份python2与python3之间的区别,目前可能不全

编码(核心类)

Python2默认编码ascii,Python3默认编码UTF-8,因此使用Python3不需要文件顶部写‘# coding=utf-8’。

py2:
  - ascii
   文件头可以修改:#-*- encoding:utf-8 -*-
py3:
   - utf-8
  文件头可以修改:#-*- encoding:utf-8 -*-

字符串类型(核心类)

Python2中字符串有两种类型:unicode和str,前者表示文本字符串,后者表示字节序列,两者没有明显的界限。

Python3中也有两种类型,str表示字符串,byte表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列。

字符串:
py2:
unicode v = u"root" 本质上用unicode存储(万国码)
(str/bytes) v = "root" 本质用字节存储
py3:
str v = "root" 本质上用unicode存储(万国码)
bytes v = b"root" 本质上用字节存储

缩进格式(核心类)

Python2的缩进机制中,1个Tab和8个Space等价的,同时允许缩进中Tab和Space在代码中共存,但这种机制在部分IDE使用中有问题。Python3中Tab和Space不再能共存,同时存在时会报错:

TabError: inconsistent use of tabs and spaces in indentation.

print,exec的用法

在python2中,print作为语句使用,而在python3中作为函数使用,exec同理:

  print(“hello”,“world”)

  在python2中则输出为一个元组;
在pyton3中输出为两个字符串,默认中间用空格隔开。

True和False用法

Python2中True和False都是全局变量,数值分别表示为1和0,因为是变量,所以存在可以被赋值的情况。

Python3中True和False是关键字,固定指向两个固定对象,不再允许被重新赋值。

小数和除法的用法

Python2中/作用就是整除,只输出整数,//是小数除法;

而在Python3中用//作为整除,/是小数除法。

实例:3/2在Python2中输出为1,在Python3中是1.5

比较运算符的区别

Python2中任意两对象都可以比较。

Python3中只有同种数据类型对象可以比较。

nonlocal

在Python2中可以在函数中使用global声明变量为全局变量,但是给一个变量声明为非局部变量是无法实现的。在Python3,新增了关键字nonlocal,使得定义非jubu变量成为了可能。

迭代器

Python2中很多返回列表对象的内置函数和方法。

在Python3中都改成了返回类似于迭代器的对象,迭代器的惰性求值特性使得操作大数据更加有效率。

for循环变量值区别*

python2中,for循环会修改外部相同名称变量的值:

  i = 1
print ('comprehension: ', [i for i in range(5)])
print ('after: i =', i ) #i=4
类似于Python3中:
i=1
for i in range(5):
print(i)
print(i) ##两次结果都是4 Python3,for循环不会修改外部相同名称变量的值:
i = 1
print ('comprehension: ', [i for i in range(5)])
print ('after: i =', i ) #i=1
[i for i in range(5)]生成的是一个链表

round函数返回值区别

Python2,round函数返回int类型值

  isinstance(round(15.5),int) #True

Python3,round函数返回float类型值

  isinstance(round(15.5),float) #True

最新文章

  1. C语言学习 第九次作业总结
  2. Lunix 命令
  3. jquery easyui的treegrid的控制
  4. Swift 02.Array
  5. SVM+HOG特征训练分类器
  6. Mysql复制表格
  7. liux环境下配置jdk
  8. 使用CInternetSession CHttpFile下载网页链接地址的文件
  9. C# 为网络程序添加用户代理
  10. MYSQLD c++函数修饰名转换工具c++filt
  11. UE4里的渲染线程
  12. java实现Excel的导入、导出
  13. PLSQL WEBSERVICES 发布
  14. 一条查询sql的执行流程和底层原理
  15. HDU - 1078 FatMouse and Cheese (记忆化搜索)
  16. 题解 P1550 【[USACO08OCT]打井Watering Hole】
  17. Maven具体解释之------maven版本号管理
  18. SSIS包部署错误之运行环境设置
  19. FilenameFilter 文件名过滤
  20. POJ P3667 Hotel——solution

热门文章

  1. python中的缓存技术
  2. shell 生成多级目录遇到最后一级目录乱码 mkdir -p a/b/c/d
  3. Django框架(十二)—— 补充:inclusion_tag、defer、only、choice、事务、创建多对多的第三张表
  4. npm和cnpm的安装(window)
  5. 【转】HTML5标签使用的常见误区
  6. 2.4 Nginx服务器基础配置指令
  7. MySQL将查询结果写入到文件的2种方法
  8. 天道神诀--linux双网卡绑定
  9. USACO2012 overplanting /// 矩阵切割 递归 oj21547
  10. str2int HDU - 4436 后缀自动机求子串信息