Python2 和 Python3 的区别

1、print

在Python 2中,“print”被视为语句而不是函数。尽管你可以,但你无需将要输出的文本包装在括号中。这可能令人困惑,因为Python中的大多数其他操作都使用需要将参数放在括号内的函数。如果将括号放在要输出的以逗号分隔的项目列表周围,也会导致意外结果。

在Python 3中,就明确的将“print”视为一个函数,这意味着你必须以标准方式将需要输出的项目传递给括号中的函数,否则你将收到语法错误。一些Python 2程序员发现这种变化很烦人,但它可以帮助防止错误的发生。

2、整数除法

Python 2 将小数点后面没有任何数字的数字视为整数,这可能会导致在除法期间出现意外结果。例如,如果在 Python 2 代码中输入表达式:3/2,则评估结果将为1,而不是你所期望的1.5。

这是因为 Python 2 会假设你希望除法的结果为整数,因此它将计算向下舍入到最接近的整数。为了获得结果1.5,你必须编写 3.0 / 2.0 来告诉 Python,你希望它返回一个浮点数,即在结果中包含小数点后面的数字。

Python 3则会默认将 3/2 评估为 1.5,这对于新程序员来说有更直观的感受。

3、列表理解循环变量

在以前的Python 2.x版本中,给出在列表推导中迭代的变量与全局变量相同的名称可能导致全局变量的值被更改, 这通常不是你想要的。

在Python 3中已经修复了这个烦人的错误。因此,你可以使用在列表理解中已经用于控制变量的变量名,而不必担心它泄露并扰乱其余代码中变量的值。

4、Unicode字符串:

默认情况下,Python 3是将字符串存储为Unicode,而如果Python 2要将字符串存储为Unicode,则要求使用“u”标记字符串。Unicode字符串比ASCII字符串更通用,它们都是Python 2的默认字符串,因为它们可以存储来自外语的字母以及表情符号和标准的罗马字母和数字。如果要确保Python 3代码与Python 2兼容,你仍然可以使用“u”来标记Unicode字符串。

5、错误处理

Python 2和 Python 3两个版本的错误处理有一个小的变化。

try: 
    trying_to_check_error 

except NameError, err: 
# python3 中必须使用 as
# except NameError as err: 
    print err, 'Error Caused'   # 不能在Python 3中工作

6、int 和 long 的区别

python2 中有 long 类型,长整型数字后会有一个 L
python3 中取消 long 类型,用 int 类型代替

  • int(符号整数):通常被称为是整数或整数,没有小数点的正或负整数
  • long(长整数):也叫渴望,无限大小的整数,这样写整数和一个大写或小写的 L

7、xrange

python3 中不存在 python2 的 xrange();python3 的 range 就是 python2 的 xrange。

  • 在 python2 中,range 返回一个列表,即 range(3) 返回 [0,1,2],
    而 xrange 返回一个 xrange 对象,即 xrange(3) 返回 iterator 对象,它与 Java 迭代器类似,并在需要时生成数字。
  • 如果我们需要多次迭代相同的序列,我们更喜欢 range(),因为 range 提供了一个静态列表。而 xrange() 每次重建序列。
  • xrange() 不支持切片和其他列表方法。
  • xrange() 的优点是,当任务迭代大范围时,它可以节省内存。
  • 在 python3 中,范围函数现在执行 xrange 在 python 2 中的功能,因此为了保持代码的可移植性,我们可能希望坚持使用范围。所以 python 3 的范围函数是来自 python 2 的 xrange。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值