python3 中的import 和from import 使用区别(包和模块)

python3 中的import 和from import 使用区别(包和模块)

1.知识点

1)什么是包、什么是模块

2)import 、from import 如何使用

3)import 和 from import 使用区别

2.实现

以如下目录结构为例说明:

funtion.py
sound/                          顶层包
      __init__.py               初始化 sound 包
      formats/                  文件格式转换子包
              __init__.py       这是一个空文件,有__init__.py文件,目录才会被视为一个包
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  声音效果子包
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  filters 子包
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

1)什么是包,什么是模块

  • 模块:.py文件就是一个模块,python中所说的模块都是指某个.py文件,模块中包含函数、类或者变量。
  • 包:当一个文件夹中含有__init__.py的文件,则这个文件夹会被视为一个包,包中可含有若干模块。

2)import 、from import 如何使用

以导入echo模块为例:

  • 使用 import

    # 导入上述目录结构中的echo.py模块
    import sound.effects.echo
    # 使用echo 模块中的方法echofilter(必须使用目录全名去访问)
    sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
    
  • 使用 from import

    # 导入上述目录结构中的echo.py模块
    from sound.effects import echo
    # 使用echo 模块中的方法echofilter
    echo.echofilter(input, output, delay=0.7, atten=4)
    
    
    ####### 或者可使用from import直接导入函数或者变量 如下:
    # 导入上述目录结构中的echo.py模块
    from sound.effects.echo import echofilter
    # 使用echo 模块中的方法echofilter
    echofilter(input, output, delay=0.7, atten=4)
    

    以导入funtion模块为例:

  • 使用 import

    # 导入上述目录结构中的funtion.py模块
    import funtion
    # 使用 funtion 模块中的方法echofilter(必须使用模块名加函数名访问)
    funtion.echofilter(input, output, delay=0.7, atten=4)
    
  • 使用 from import

    # 导入上述目录结构中的funtion.py模块
    from funtion import echofilter
    # 直接使用 funtion 模块中的方法echofilter
    echofilter(input, output, delay=0.7, atten=4)
    

3)import 和 from import 使用区别

  • import:使用import时,import后除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字

  • from import:使用from import时,from 后可跟包、模块、import后既可以是包里面的子包或者子模块,也可以是上一级子模块中的函数、类或者变量。import 语法会首先把 item 当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:ImportError 异常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值