• 技术文章 >Python技术 >Python基础教程

    新手学习python2还是python3?详细区别讲解

    2021-01-23 14:31:49原创3429

    python2和python3的版本,目前主要分为两类:

    Python 2.x的版本,被称为Python2,目前最新版是2.7.18

    Python 3.x的版本,被称为Python3,目前最新版是3.9.1

    从Python2到Python3是一个大版本升级,两者之间有很多地方互不兼容。

    使用时当然选择越新的Python版本越好,版本越老的代码越难维护。

    维护老版本的代码时,需要了解各版本之间的主要差异。有时看到一些代码的语法特点,可以大致猜出它是什么版本

    Python2和Python3之间的变化主要在以下几个方面

    1.print函数:

    Python 2:print是语句

    1

    2

    print "Hello World!"

    # 结果:Hello World!

    Python 3:print是函数

    1

    2

    3

    4

    print('Hello World!')

    # 结果:Hello World!

    print 'Hello World'

    # 结果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

    2.整数相除:

    Python 2:3/2的结果是整数

    1

    2

    3

    4

    print 3 / 2

    # 结果:1

    print 3 / 2.0

    # 结果:1.5

    Python 3:3/2的结果是浮点数

    1

    2

    3

    4

    print(3 / 2)

    # 结果:1.5

    print(3 / 2.0)

    # 结果:1.5

    3.Unicode:

    Python 2:有两种字符串类型:str和unicode

    1

    2

    3

    4

    5

    6

    7

    a = '您好'

    print a

    # 结果:SyntaxError: Non-ASCII character '\xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    # 在Python 2中,如果代码中包含非英文字符,需要在代码文件的最开始声明编码# _*_ coding:utf-8 _*_

    a = '您好'

    print a

    # 结果:您好

    Python 3:字符串默认就是Unicode

    1

    2

    3

    a = '您好'

    print(a)

    # 结果:您好

    Python 3中的str相当于Python 2中的unicode

    4.异常处理:

    Python 2:

    1

    2

    3

    4

    5

    6

    try:

        result = 1 / 0

    print result

    except ZeroDivisionError, e:

    print str(e)

    # 结果:integer division or modulo by zero

    1

    2

    3

    4

    5

    6

    try:

        result = 1 / 0

    print result

    except ZeroDivisionError as e:

    print str(e)

    # 结果:integer division or modulo by zero

    Python 3:只支持as关键字

    1

    2

    3

    4

    5

    6

    try:

        result = 1 / 0

    print(result)

    except ZeroDivisionError as e:

        print(str(e))

    # 结果:division by zero

    5.xrange:

    Python 2:有 range 和 xrange 两个方法

    区别:

    range返回一个list,在被调用的时候即返回整个序列

    xrange返回一个iterator,在每次循环中生成序列的下一个数字

    1

    2

    3

    4

    5

    6

    # range

    print range(4)

    # 结果:[0, 1, 2, 3]

    # xrange

    print xrange(4)

    # 结果:xrang(4)

    Python 3:不再支持 xrange 方法

    1

    2

    3

    4

    5

    print(range(4))

    # 结果:range(0, 4)

    for i in range(4):

        print(i, end=' ')

    # 结果:0 1 2 3

    Python 3中的 range 方法就相当于 Python 2中的 xrange 方法

    6.map函数:

    Python 2:map函数返回list

    1

    2

    print map(lambda x: x+1, range(5))

    # 结果:[1, 2, 3, 4, 5]

    Python 3:map函数返回iterator

    1

    2

    3

    4

    print(map(lambda x: x+1, range(5)))

    # 结果:<map object at 0x00000233A7B85E10>

    print(list(map(lambda x: x+1, range(5))))

    # 结果:[1, 2, 3, 4, 5]

    filter函数在Python 2和Python 3中也是同样的区别

    7.不支持has_key:

    Python 2:

    1

    2

    my_dict = {"age": 30, "name": "Zhang San"}print my_dict.has_key("age")print "age" in my_dict

    # 结果:True#      True

    Python 3:

    1

    2

    3

    4

    my_dict = {"age": 30, "name": "Zhang San"}print("age" in my_dict)

    # 结果:True

    print(person.has_key("age"))

    # 结果:AttributeError: 'dict' object has no attribute 'has_key'

    以上就是两个版本的差异了,新入门的同学建议学习Python3,这是以后发展的趋势。正在学习Python2的同学也不要着急,记住上面的知识点就可以快速上手Python3啦!

    专题推荐:python2 python3 版本区别
    上一篇:python中yield from怎么用? 下一篇:python中xlwings是什么?

    相关文章推荐

    • 什么是网络协议• python中的去除重复项的操作• python中少见的函数map()和partial()• python的sort()排序方法• Python中的文件读写-理论知识

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网