python学习(模块)

模块搜索路径:导入一个叫 spam的模块时,解释器先在当前目录中搜索名为 spam.py的文件,然后在环境变量 PYTHONPATH指琮的目录列表中搜索,然后是环境变量 PATH中的路径列表。如果 PYTHONPATH没有设置,或者文件没有找到,接下来搜索安装目录,在 UNIX中,通常是 .:/usr/local/lib/python。实际上,解释器由 sys.path变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录), PATHPATH和安装目录。

包通常是使用用“圆点模块名”的结构化模块命名空间。例如,名为 A.B的模块表示了名为“ A”的包中名为“ B”的子模块。正如同用模块来保存不同的模块架构可以避免全局变量之间的相互冲突,使用圆点模块名保存像 NunPyPython Imaging Library之类的不同类库架构可以避免模块之间的命名冲突。

导入模块时,Python通过sys.path中的目录列表来搜索存放包的子目录。

必须要有一个__init__.py 文件的存在,才能使Python视该目录为一个包;这是为了防止某些目录使用了“string”这样的通用名而无意中在随后的模块搜索路径中覆盖了正确的模块。最简单的情况下,__init__.py 可以只是一个空文件,不过它也可能包含了包的初始化代码,或者设置了 __all__ 变量.

包用户可以从包中导入合法的模块,例如:

import Sound.Effects.echo

这样就导入了Sound.Effects.echo子模块。它必需通过完整的名称来引用。

Sound.Effects.echo.echofilter(input, output, delay=0.7, atten=4)

导入包时有一个可以选择的方式:

from Sound.Effects import echo

这样就加载了echo子模块,并且使得它在没有包前缀的情况下也可以使用,所以它可以如下方式调用:

echo.echofilter(input, output, delay=0.7, atten=4)

还有另一种变体用于直接导入函数或变量:

from Sound.Effects.echo import echofilter

这样就又一次加载了echo子模块,但这样就可以直接调用它的 echofilter() 函数:

echofilter(input, output, delay=0.7, atten=4)

需要注意的是使用 from package import item 方式导入包时,这个子项(item)既可以是包中的一个子模块(或一个子包),也可以是包中定义的其它命名,像函数、类或变量。import 语句首先核对是否包中有这个子项,如果没有,它假定这是一个模块,并尝试加载它。如果没有找到它,会引发一个 ImportError 异常。

相反,使用类似import item.subitem.subsubitem 这样的语法时,这些子项必须是包,最后的子项可以是包或模块,但不能是前面子项中定义的类、函数或变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值