51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1503|回复: 1
打印 上一主题 下一主题

Python版本的发展

[复制链接]
  • TA的每日心情
    无聊
    4 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-10 16:08:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    Python的管理者把他们对Python新特性发展的注意力转移到了Python3.x系列上了。这意味着拍Python2系列除了会得到bug的修复和更新对于新的硬件和操作系统的版本的支持之外,不会再有对于语言和标准库的全新特征版本的发布。作者最初开发Python3的目的就是去除之前的Python版本中的出现的主要缺点并删除一些比较繁琐的东西。对标准库所做的最新的改进都只作用于Python3.x。


    Python2.x和Python3.x之间的区别:

        1. 函数的改变,例如print;


        2. 很多API返回类型的改变,例如:dict的dict.keys(), dict.items() 和 dict.values() 返回“views”不在返回”lists”;


        3. 部分函数的参数的改变和部分函数的删除,例如:builtin.sorted()不再接受cmp参数,__cmp__()已经不存在;


        4. 变量类型的改变,例如:long在新版本中已经不存在,新版本中只有int


        5. Pyhton3.x使用text和(binary)data代替之前版中的unicode和8位的strings


        6. 语法的改变,例如as,with变成了保留字,新的Metaclass语法等


        7. 语法的删除,例如:
                    1)去除了<>,全部改用!=
                    2)去除``,全部改用repr()
                    3)关键词加入as 和with,还有True,False,None
                    4)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
                    5)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数


        8. 标准库的改变,很多老的模块已经删除,例如:gopherlib,md5;部分模块的名字已经改变


        9. 异常的改变,例如:StandardError已经删除等


        10. 操作符和特殊方法的改变,例如:__getslice__(),__setslice__(),__delslice__()等已经删除


        11. 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值。


        12. 输入函数改变了,删除了raw_input,用input代替:

    •        Python2.X:  guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法
    •        Python3.X:  guess = int(input('Enter an integer : '))

        13. 扩展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list 对象和seq是可迭代的。


        14. 异常的改变

    •     1)所以异常都从 BaseException继承,并删除了StardardError
    •     2)去除了异常类的序列行为和.message属性
    •     3)用 raise Exception(args)代替 raise Exception, args语法

        15. 模块变动
        1)移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。
        2)移除了imageop模块
        3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2,     rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块
        4)移除了bsddb模块(单独发布,可以从http://www.jcea.es/programacion/pybsddb.htm获取)
        5)移除了new模块
        6)os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下
        7)tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是 tokenize.tokenize()

    以上只是列举了Python2.x和Python3.x之间的部分改变,还有很多未列出。总体上来说,做的改动非常大,但是我们可以通过2to3将Python2.x的代码转换成Python3.x。
    Python3.x运行 pystone benchmark的速度比Python2.x慢30%。Guido认为Python3.x有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。


    Python3.x的个版本之间的主要更新:
    通过查看Python3.x各版本的更新,可以看出更新主要集中在如下几个方面:

    • 语法特征的增加
    • 新的库模块的增加
    • 新的内建特性
    • 函数实现的改进和优化
    • 库模块性能的提升,库模块的增加和删除
    • C API的改变
    • 安全性的改进
    • CPython性能的改进

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 14:43 , Processed in 0.065929 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表