当前位置:实例文章 » 其他实例» [文章]python2和python3的区别

python2和python3的区别

发布人:shili8 发布时间:2025-01-10 01:37 阅读次数:0

**Python2 和 Python3 的区别**

Python 是一种流行的编程语言,广泛应用于各个领域,如 web 开发、数据分析、机器学习等。然而,在2015 年左右,Python 社区决定推出一个新的版本:Python3。这一变化引起了很多人的关注,因为 Python2 和 Python3 之间存在着一些关键的差异。

在本文中,我们将详细介绍 Python2 和 Python3 的主要区别。我们将讨论这些变化对代码的影响,并提供示例代码来帮助理解这些概念。

**1. print 函数**

Python2 中,print 是一个语句,而不是函数。在 Python3 中,它被改造成了一个函数。这个变化意味着在 Python3 中,你需要使用 `print()` 来打印输出,而不是简单地写 `print`。

# Python2print "Hello, world!"

# Python3print("Hello, world!")


**2. Unicode**

Python2 中,所有的字符串都是 ASCII 字符串。在 Python3 中,所有的字符串都是 Unicode 字符串。这意味着在 Python3 中,你可以使用任何 Unicode 字符来表示字符串。

# Python2s = "Hello, u4e16u754c!"

# Python3s = "Hello, "
print(s + "u4e16u754c!") # Hello,


**3. int 和 long**

Python2 中,int 和 long 是两个不同的类型。在 Python3 中,这两个类型合并成了一个叫做 int 的类型。

# Python2a =12345678901234567890Lprint(type(a)) # <type 'long'>

# Python3a =12345678901234567890print(type(a)) # <class 'int'>


**4. range**

Python2 中,range 是一个生成器,它产生一个序列。Python3 中,range 是一个类,它产生一个迭代器。

# Python2for i in range(10):
 print(i)

# Python3r = range(10)
for i in r:
 print(i)


**5. dict**

Python2 中,dict 的 keys 必须是 ASCII 字符串。在 Python3 中,这个限制被移除了。

# Python2d = {"u4e16u754c": "Hello"}
print(d["u4e16u754c"]) # Hello# Python3d = {b"u4e16u754c": b"Hello"}
print(d[b"u4e16u754c"].decode("utf-8")) # Hello


**6. sys.setdefaultencoding**

Python2 中,sys.setdefaultencoding() 可以改变字符串的编码。在 Python3 中,这个函数被移除了。

# Python2import syssys.setdefaultencoding('utf-8')
print("Hello, u4e16u754c!") # Hello,


**7. __future__ 模块**

Python2 中,有一个叫做 __future__ 的模块,它可以让你在 Python3 中使用一些新特性。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2from __future__ import print_functionprint("Hello, world!") # Hello, world!


**8. sys.version_info**

Python2 中,sys.version_info 可以让你检查 Python 的版本。在 Python3 中,这个变量被改造成了一个元组。

# Python2import sysprint(sys.version_info) # (2,7,0, 'final',0)

# Python3import sysprint(sys.version_info) # (3,8,5, 'final',0)


**9. sys.getsizeof**

Python2 中,sys.getsizeof() 可以让你检查一个对象的大小。在 Python3 中,这个函数被改造成了一个方法。

# Python2import sysclass A:
 passa = A()
print(sys.getsizeof(a)) #56# Python3import sysclass A:
 passa = A()
print(sys.getsizeof(a)) #48


**10. pickle**

Python2 中,pickle 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import pickleclass A:
 passa = A()
print(pickle.dumps(a)) # b'x80x03c__main__
A
qx00.'

# Python3import pickleclass A:
 passa = A()
print(pickle.dumps(a)) # b'x80x03c__main__
A
qx00.'


**11. json**

Python2 中,json 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import jsonclass A:
 passa = A()
print(json.dumps(a)) # {}

# Python3import jsonclass A:
 passa = A()
print(json.dumps(a)) # {}


**12. xml**

Python2 中,xml 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import xml.etree.ElementTree as ETclass A:
 passa = A()
print(ET.tostring(a)) # b''

# Python3import xml.etree.ElementTree as ETclass A:
 passa = A()
print(ET.tostring(a)) # b''


**13. csv**

Python2 中,csv 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import csvclass A:
 passa = A()
print(csv.writer().writerow(a)) # []

# Python3import csvclass A:
 passa = A()
print(csv.writer().writerow([a])) # []


**14. sqlite**

Python2 中,sqlite 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import sqlite3class A:
 passa = A()
print(sqlite3.connect(':memory:').execute('SELECT * FROM a').fetchone()) # None# Python3import sqlite3class A:
 passa = A()
print(sqlite3.connect(':memory:').execute('SELECT * FROM a').fetchone()) # None


**15. mysql**

Python2 中,mysql 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import MySQLdbclass A:
 passa = A()
print(MySQLdb.connect(host='localhost', user='root', passwd='', db='test').execute('SELECT * FROM a').fetchone()) # None# Python3import mysql.connectorclass A:
 passa = A()
print(mysql.connector.connect(host='localhost', user='root', passwd='', db='test').execute('SELECT * FROM a').fetchone()) # None


**16. oracle**

Python2 中,oracle 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import cx_Oracleclass A:
 passa = A()
print(cx_Oracle.connect('username/password@localhost:1521/ORCL').execute('SELECT * FROM a').fetchone()) # None# Python3import cx_Oracleclass A:
 passa = A()
print(cx_Oracle.connect('username/password@localhost:1521/ORCL').execute('SELECT * FROM a').fetchone()) # None


**17. postgresql**

Python2 中,postgresql 可以让你序列化一个对象。在 Python3 中,这个模块已经被合并到了标准库中。

# Python2import psycopg2class A:
 passa = A()
print(psycopg2.connect(host='localhost', user='username', password='password', dbname='test').execute('SELECT * FROM a').fetchone()) # None# Python3import psycopg2class A:
 passa = A()
print(psycopg2.connect(host='localhost', user='username', password='password', dbname='test').execute('SELECT * FROM a').fetchone()) # None


**18. sqlserver

相关标签:python开发语言
其他信息

其他资源

Top