模块

作者: 黑夜的眸 | 来源:发表于2018-08-06 22:54 被阅读0次

    解决变量重名:模块

    模块的名字就是py文件的文件名


    QQ截图20180806214053.png

    解决模块重名:包

    QQ截图20180806214431.png

    动态导入模块

    如果导入的模块不存在,Python解释器会报 ImportError 错误:

    >>> import something
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named something
    

    有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了StringIO这个功能。

    这是因为Python是动态语言,解释执行,因此Python代码运行速度慢。

    如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。

    同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。

    利用ImportError错误,我们经常在Python中动态导入模块:

    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO
    

    上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。
    try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。

    利用import ... as ...,还可以动态导入不同名称的模块。

    Python 2.6/2.7提供了json 模块,但Python 2.5以及更早版本没有json模块,不过可以安装一个simplejson模块,这两个模块提供的函数签名和功能都一模一样。

    下面的代码,能在Python 2.5/2.6/2.7都正常运行:

    try:
        import json
    except ImportError:
        import simplejson as json
    
    print json.dumps({'python':2.7})
    

    相关文章

      网友评论

          本文标题:模块

          本文链接:https://www.haomeiwen.com/subject/kjknvftx.html