python2与python3的区别
Python2 和Python3 的主要区别有以下几个方面:
1、 在Python2中,print是一个打印语句,将Python后面的内容视为元组对象,直接打印出来,
在Python3中做为函数存在,print函数可以接收多个位置的参数,即print(arg1,arg2...argn)输出的参数之间用空格隔开,例:
1 #python2 2 print("hello world")#语句 3 # 命令行结果 4 hello world 5 print("hello world","hello world")#语句 6 # 命令行结果 7 ('hello world','hello world')
1 #python3 2 print("hello world")#语句 3 #命令行结果 4 hello world 5 print("hello world","hello world")#语句 6 #命令行结果 7 hello world hello world
2、编码的改变
在python2中有两种字符串类型str和unicode
在python2中,str就是编码后的结果bytes,所以在Python2中,unicode字符编码的结果就是str/bytes
1 #coding:utf-8 2 s='林' #在执行时,'林'会被以conding:utf-8的形式保存到新的内存空间中 3 4 print repr(s) #'\xe6\x9e\x97' 三个Bytes,证明确实是utf-8 5 print type(s) #<type 'str'> 6 7 s.decode('utf-8') 8 # s.encode('utf-8') #报错,s为编码后的结果bytes,所以只能decode
当python解释器执行到产生字符串的代码时(例如s=u'林'),会申请新的内存地址,然后将'林'以unicode的格式存放到新的内存空间中,所以s只能encode,不能decode
1 s=u'林' 2 print repr(s) #u'\u6797' 3 print type(s) #<type 'unicode'> 4 5 6 # s.decode('utf-8') #报错,s为unicode,所以只能encode 7 s.encode('utf-8')
对于unicode格式的数据来说,无论怎么打印,都不会乱码
python3中的字符串与python2中的u'字符串',都是unicode,所以无论如何打印都不会乱码
在python3中也有两种字符串类型str和bytes\
str是unicode