更详细地了解Python2与Python3
在本教程中,我们将讨论Python 2和Python 3之间的差异,因此在这里我们在Python 2.0和3.0之间存在一些差异。
在本教程中,我将介绍以下主题:
自动python 2to3py。
因此,这里的x是一个像2.1 2.2 2.7的版本,在python 3点x中,是python 3.1至3.5 3.6,所以现在
让我们看看差异2和Python 3
1表达:
表达式代表类似数字,字符串或类的实例的东西。任何值都是表达式!任何做某事的事情都是陈述。对变量或功能调用的任何分配都是语句。表达式中该语句中包含的任何值。
在Python 2中获得表达:
在这里评估表达的内容。
假设我们在Python 2中有一个输入,因为该值是原始的输入。
- Expand|Select|Wrap|Line Numbers
在 python 3 中评估 的 expression :
但是 python 3 我们 a a input 之后 一些 值。
在这里,无论我们输入什么,在Python 2和Python 3中分配了值x,因此当我在Python 2中输入2*6的结果是12,而Witch表示您将获得评估的值。
但是在Python 3中运行此程序2*6时,我们得到的结果是字符串值,类似于2*6的字符串格式。
那么如何在Python 3中获得评估的值,因此对评估进行评估,我们必须使用表达式或可以说是评估的函数,当您在输入之前编写eval时,将其转换为Python中的评估值
前任:
- x= eval(input("enter some values")) = 12
Python 2和Python 3的详细表达示例:
在Python 2中:
输入 :
- name = input("What is your name? ")
- print ("Hello, %s." %name)
输出 :
- Python 2.7.10 (default, jul 14 2015, 19:46:27)
- [GCC 4.8.2] on linux
- What is your name? vinod
- Hello, vinod.
在Python 3中:
输入 :
- name = input("What is your name? ")
- print ("Hello, %s." %name)
输出 :
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] ON LINUX
- What isname?name ? Vinod
- Hello, Vinod.
因此,这是评估表达的Python 2和Python 3的主要差异。
2打印选项
在python 2中,是语句,其中python 3打印是一个函数,在python 2中,我们不需要添加括号,但是在python 3中,我们需要在括号中写入值。
前任 :
- Python 2 - print "hello world"
- Python 3 - ("hello world")
Python 2
输入 :
- print "hello world"
输出 :
- Python 2.7.10 {default, jul 14 2015, 19:46:27)
- [GCC 4.8.2] on linux
- Hello World
Python 3:
输入 :
- 1 != 1.0
- print (False)1 != 1.0
- print (False)
输出 :
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] on Linux
- False
3不相等的操作员
当我们使用Python 2中的运算符时,让我们转到第三个差异,因此我们必须使用或大于和小于符号。
但是在Python 3中,有一个通用操作员,它是感叹号,并且与等同,因此该操作员用其他语言使用,这就是我称为通用操作员的原因。
- Ex :
- Python 2 - <> operator is used for not equal
- Python 3 - ! operator is used for not equal
在Python 2中: 输入 :
- 1 <> 1.0
- print "False"
输出 :
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] ON LINUX
- False
在Python 3中:
输入 :
- 1 != 1.0
- print (False)1 != 1.0
- print (False)
输出 :
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] on linux
- False
4范围
让我们转到Python 2和Python 3中的第四个差异。
那么什么范围?
范围用于循环迭代整数的值。因此,当我们使用Python编程中的范围时,它将返回列表。
因此,在这里您可以看到x等于范围10,当我们检查变量x时,它返回了我们的列表类型,这意味着在Python 2范围内是列表的类型。当我编写X时,然后将获得对象列表。是0 1 2 3 4 5 6 7 8 9。
因此,现在让我们写入Python 3时,我们编写x等于范围5
因此,范围5的该值分配给变量x,当我们检查变量x的类型时,它返回了一个范围对象本身,这意味着在Python 3范围内是范围对象本身,因此这些是Python 2之间的关键区别和Python 3。
Python 2和Python 3的详细范围示例:
Python 2:
输入
- print range(0,10,1)
输出
- Python 2.7.10 (default, jul 14 2015, 19:46:27)
- [GCC 4.8.2] on linux
- [0,1,2,3,4,5,6,7,8,9]
Python 3
输入
- (list(range(10))
)
输出
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] on linux
- =>[0,1,2,3,4,5,6,7,8,9]
5自动Python 2to3py。 :
现在,让我们转到主题,这是将Python 2脚本自动化为Python 3代码的方法。
在这里,我们可以使用简单程序进行测试,例如在Python中添加两个数字。
Python 2:
输入
- num1 = 1
- num2 = 2
- # Add two numbers
- sum = float(num1) + float(num2)
- # Display the sum
- print 'The sum of {0} and {1} is {2}'.format(num1, num2, sum)
输出
- Python 2.7.10 (default, Jul 14 2015, 19:46:27)
- [GCC 4.8.2] ON LINUX
- The sum of 1 and 2 is 3.0
现在使用2到3个翻译,我们可以转换上述代码
输入 :
- num1 = 1
- num2 = 2
- # Add two numbers
- sum = float(num1) + float(num2)
- # Display the sum
- print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
- Output :
- Python 3.6.1 (default, Dec 2015, 13:05:11)
- [GCC 4.8.2] On linux
- =>[0,1,2,3,4,5,6,7,8,9]
因此,在这里我们看到它可以在命令行上将其转换为2至3的Python 3 x代码,因此这是将Python 2程序转换为Python 3的方法,因此这全都与Python 2和Python之间的差异有关3。
Python提供了自己的工具,称为2to3.py。它运行了一堆脚本,将您的Python 2代码转换为3。
并不完美,但它做得很棒。
转换后,手动解决问题。
6性能:
在Python 3中,当将当前的Python 3与Python 2 2基准进行比较时,大多数性能问题几乎可以忽略不计。
7一些主要的家政变化:
Python -2
打印功能支架可选。
前缀字符串Unicode制作Unicode字符串。
整数的部门总是返回整数-5/2 = 2。
raw_input()读取字符串。
输入()评估读取的数据。
发电机.next()。
Python -3
打印功能支架强制性。
默认情况下字符串Unicode。
整数的划分可能会导致浮点-5/2 = 2.5。
RAW_INPUT()不可用。
输入总是读取字符串。
下一个(生成器)。
PY2到PY3实用程序。
字典.keys()和.values()返回视图而不是列表。
不能再在非自然比较上使用比较操作员。
例如。没有任何
百分比(%)字符串格式操作员被弃用使用.format()函数或串联。
8有问题:
如果您一直在Python 2.x工作,则可能在这里和那里遇到错误 一段时间。 只是谷歌问题,几乎可以肯定的是,搬到python3时也遇到了这个问题 我希望您喜欢阅读此Python教程。 我们已经涵盖了Python 2和Python 3中的所有基础差异,因此您现在可以开始练习。 愉快的学习。
评论已关闭