在编写并调试Python程序的过程中,我们总会遇到这样或那样的错误,其中绝大多数错误都是由于用户粗心或语法错误引起的。下面将给大家详细讲解排查Python程序错误的知识。
Python 2升级Python 3发生的错误
在当今市面中,Python有2.7和Python 3.x两个大的版本分支。在网络教程、教学文档和出版图书中有很多是用Python 2.7实现的,而我们本书是用Python 3.6实现的。当我们直接将Python 2.7代码运行在Python 3.6环境中时,可能会发生一些语法错误。
1 print变成了print()
在Python 2版本中,print是作为一个语句使用的,在Python 3版本中print()作为一个函数出现。下面通过两段代码来展示两个版本的区别。
Python 2.x版本代码如下:
1>>> i = 12>>> print 'Python' 'is', 'number', i3Pythonis number 1
Python 3.x版本代码如下:
1>>> i = 12>>> print('Python' 'is', 'number', i)3Pythonis number 1
也就是说,在Python 3版本中,所有的print内容必须用小括号括起来。
2 raw_input变成了input
在Python 2版本中,输入功能是通过raw_input实现的。而在Python 3版本中,是通过input实现的。下面来看两行代码的区别:
1name = input('What is your name?') #python3版本的代码2name = raw_input('What is your name?') # python2版本的代码
3 整数及除法的问题
初学者在编写Python程序时,特别是将Python 2程序在Python 3环境下运行时,很可能会遇到“TypeError: 'float' object cannot be interpreted as an integer”错误。例如下面的代码是在Python 2运行成功的:
1batch = 2002for x in range(len(order_nos) / batch + 1):3 # do something
其中,order_nos是订单列表,而在Python 3环境下运行时会提示“TypeError: 'float' object cannot be interpreted as an integer”错误,意思是float类型不能解释为int类型。这是因为在Python 3中,int和long统一为int类型,int表示任何精度的整数。在以前的Python 2版本中,如果参数是int或者是long的话,就会返回相除后结果的向下取整(floor),而如果参数是float或者是complex的话,那么就会返回相除后结果的一个恰当的近似。当使用int超过本地整数大小时,不会再导致Ov