python2&python3

1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')

   Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'

2、Python2  range(1,10)返回列表,Python3中返回迭代器,节约内存

3、Python2 中使用ascii编码,Python3中使用utf-8编码

4、Python2 中unicode表示字符串序列,str表示字节序列

Python3 中str表示字符串序列,byte表示字节序列

5、Python2 中为正常显示中文,引入coding声明,Python3中不需要

6、Python2 中是raw_input()函数,Python3中是input()函数

7、Python2 导入同级目录下的模块无需  Python3导入同级目录下的模块需要加上 .

python2 python3
1. 编码方面  
 ASCII编码  -- str类型            Unicode编码  --  Unicode类型  Unicode编码  --  str类型      非Unicode编码  --  字节类型: bytes & bytearrays 
python2创建的字符串根据操作系统而定,  Linux下为 utf-8,  简体中文Windows下为 GBK,  ipython2默认为 utf-8 python3&ipython3创建的字符串为: Unicode编码 -- str类型 的字符串,  源码文件默认为utf-8
   
   
2. 语法方面  
 除法运算 /  ,  整数运算时会把小数部分完全忽略掉,  浮点数运算时会保留一位小数.  进行整数运算时,  结果仍为浮点数
xrange 返回一个生成器, 需生成较大的数字序列时, xrange性能更优. range 生成一个list对象
zip()函数返回列表 zip()函数返回迭代器
 不等运算符包括: != 和 <>  仅包含 !=
 反引号  `` &  repr函数  仅允许使用 repr函数
exec 语句 exec() 函数
print 语句 print()  函数

a. 异常捕获的语法 :  except exc, var

b. 所有异常类型的对象都是可以被直接抛出的

c. raise语句使用了逗号 将抛出对象类型和参数分开

a. 使用 as 作为关键字 :  except exc as var

b. 只有继承自 BaseException 的对象才可以被抛出

c. 不再使用此种写法

 

添加关键字 : as  with  True  False  None  ,   添加 nonlocal语句

引入抽象基类(Abstraact Base Classes, ABCs)  容器类和迭代类被ABCs化, cellections 模块新增多个类型

   
3. 模块改名  
 _winreg  winreg
ConfigParser  configparser
Queue queue
copy_reg copyreg
SocketServer socketserver
repr reprlib
new, md5, gopherlib等模块被删除  
   
   
4. 数据类型  
存在 long类型, 不存在 bytes类型 去除 long类型,  新增 bytes类型
存在 iterkeys()等函数 dict的.keys()、.items 和.values()方法返回迭代器,  去除 dict.has_key() ,  使用 in代替
   
   
5. 输入输出  
raw_input("提示信息") 得到是 str类型 ,  input("提示信息") 得到是 int类型 input("提示信息") 统一得到是 str类型
file( ... )    open( ... )  打开文件 仅能使用  open( ... )  或加上with
map()内置函数 &  filter()内置函数  :  <built-in  function filter>,  返回列表 map类 & filter类  : <filter object at 0x10d8bd3c8>,  返回可迭代对象
   


                   

上一篇:请解释ASP.NET 中的web 页面与其隐藏类之间的关系?


下一篇:eclipse插件maven的使用,web打包成WAR,tomcat下直接运行