python2.* 版本 与 3.* 版本中的区别


Unicode编码

  • python2.x 解释器默认编码格式:ASCII,因此默认字符串不支持中文
  • python3.x 解释器默认编码格式:UTF-8

print函数

print "Hello World"		# 2.x版本中格式
print("Hello World")	# 3.x版本中格式
''' 2.6版本已可以支持新的print()语法'''
from __future__ import print_function
print("fish", "panda", sep=', ')

raw_input() 和 input( )

python2.x中raw_input()input( ),两个函数都存在,其中区别为:

  • raw_input()---将所有输入作为字符串看待,返回字符串类型
  • input()-----只能接收"数字"的输入,在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float )

在python3.x中raw_input()input( )进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。

不等运算符

  • python2.x 不等于,有两种写法:!=<>
  • python3.x 不等于,只有一种写法:!=,去掉了 <> 写法

数据类型

  • python2.x中数据类型分为:整型(int)长整型(long)两种类型;

  • python3.x中去掉了长整型(long),把长整型(long)整合到整型(int)中,保留了一种;

  • python3.x中新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法;

    >>> b = b'china' 
    >>> type(b) 
    <type 'bytes'>
    
    • str 对象和 bytes 对象可以使用 .encode() (str -> bytes).decode() (bytes -> str)方法相互转化;

      >>> s = b.decode() 
      >>> s 
      'china' 
      >>> b1 = s.encode() 
      >>> b1 
      b'china' 
      

除法

  • python2.x 中一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分;

    >>> 1/2
    0
    
    • 让Python2.x改变除法的默认执行方式可以在程序中加入以下语句,或者在解释器里执行它:

      >>> from __future__ import division
      >>> 1/2
      0.5
      
  • python3.x中变成真除法(无论任何类型都会保持小数部分,即使整除也会表示为浮点数形式)。

>>> 1/2
0.5

map 和 filter

python2.x 中mapfilter两者的类型是:内置函数(built-in function),返回值则是列表类型数据;

map(lambda x:x*2, [1,2,3])		>> [2,4,6]
filter(lambda x:x%2==0, range(10))    >>[0,2,4,6,8]

python3.x 中mapfilter两者的类型是:类(class),返回结果也从当初的列表成了一个可迭代的对象;

map(lambda x:x*2, [1,2,3])   >> map object at 0x10d8bd400>
filter(lambda x:x%2==0, range(10))   >> filter object at 0x10d8bd3c8>
原文地址:https://www.cnblogs.com/hoyun/p/12767951.html