zoukankan      html  css  js  c++  java
  • python 模块导入

      1. 模块导入:

    要使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块 math:
    import math
    你可以认为math就是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类:
    >>> math.pow(2, 0.5) # pow是函数
    1.4142135623730951
    
    >>> math.pi # pi是变量
    3.141592653589793
    如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:
    from math import pow, sin, log
    这样,可以直接引用 pow, sin, log 这3个函数,但math的其他函数没有导入进来:
    >>> pow(2, 10)
    1024.0
    >>> sin(3.14)
    0.0015926529164868282
    如果遇到名字冲突怎么办?比如math模块有一个log函数,logging模块也有一个log函数,如果同时使用,如何解决名字冲突?
    如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突:
    import math, logging
    print math.log(10)   # 调用的是math的log函数
    logging.log(10, 'something')   # 调用的是logging的log函数
    如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突:
    from math import log
    from logging import log as logger   # logging的log现在变成了logger
    print log(10)   # 调用的是math的log
    logger(10, 'import from logging')   # 调用的是logging的log

    question:

    Python的os.path模块提供了 isdir() 和 isfile()函数,请导入该模块,并调用函数判断指定的目录和文件是否存在。
    注意: 
    1. 由于运行环境是平台服务器,所以测试的也是服务器中的文件夹和文件,该服务器上有/data/webroot/resource/python文件夹和/data/webroot/resource/python/test.txt文件,大家可以测试下。
    2. 当然,大家可以在本机上测试是否存在相应的文件夹和文件。
    import os
    print os.path.isdir(r'C:Windows')
    print os.path.isfile(r'C:Windows
    otepad.exe')

    answer:

    from os.path import isdir,isfile
    
    print isdir(r'/data/webroot/resource/python')
    print isfile(r'/data/webroot/resource/python/test.txt')
    动态导入模块
    如果导入的模块不存在,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 语句。

    case:

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

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

    试写出导入json 模块的代码,能在Python 2.5/2.6/2.7都正常运行。

    try:
        import json
    except ImportError:
        import simplejson
    
    print json.dumps({'python':2.7})
  • 相关阅读:
    mysql跟踪提交的SQL语句
    Xamarin.Forms 启动App时获取屏幕宽高
    vs for mac xamarin.forms 将pcl转换为netstandard后报错
    MAC显示文件夹路径
    MAC下使用Charles抓取安卓模拟器数据
    mysql不能插入中文
    Xamarin的不归路-使用Gorilla Player实时预览XAML
    sqlserver2008附加数据库时提示“无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)”
    Xamarin的不归路-ios模拟器调整窗口大小
    Xamarin的不归路-ios模拟器没有键盘
  • 原文地址:https://www.cnblogs.com/blogofwyl/p/4598351.html
Copyright © 2011-2022 走看看