部分高等技能:为了削减一个编译模块的大年夜小,你可以在 Python 敕令行中应用 -O 或者 -OO。-O 参数删除了断言语句,-OO 参数删除了断言语句和 __doc__ 字符串。
因为某些法度榜样依附于这些变量的可用性,你应当只在肯定无误的场合应用这一选项。“优化的” 模块有一个 .pyo 后缀而不是 .pyc 后缀。将来的版本可能会改变优化的效不雅。
来自 .pyc 文件或 .pyo 文件中的法度榜样不会比来自 .py 文件的运行更快;.pyc 或 .pyo 文件只是在它们加载的时刻更快一些。
compileall 模块可认为指定目次中的所有模块创建 .pyc 文件(或者应用 -O 参数创建 .pyo 文件)。
在 PEP 3147 中有很多关这一部分内容的细节,并且包含了一个决定计划流程。
标准模块
这两个变量只在说冥器的交互模式下有意义。
变量 sys.path 是说冥器模块搜刮路径的字符串列表。它由情况变量 PYTHONPATH 初始化,如不雅没有设定 PYTHONPATH ,就由内置的默认值初始化。你可以用标准的字符串操作修改它
dir() 函数
内置函数 dir() 用于按模块名搜刮模块定义,它返回一个字符串类型的存储列表:
python fibo.py
无参数调用时,dir() 函数返回当前定义的定名:
留意该列表列出了所有类型的名称:变量,模块,函数,等等。
dir() 不会列出内置函数和变量名。如不雅你想列出这些内容,它们在标准模块 builtins 中定义:
包
包平日是应用用“圆点模块名”的构造化模块定名空间。例如,名为 A.B的模块表示了名为 A 的包中名为 B 的子模块。正如同用模块来保存不合的模块架构可以避免全局变量之间的互相冲突,应用圆点模块名保 存像 NumPy 或Python Imaging Library 之类的不合类库架构可以避免模块之间的定名冲突。
假设你如今想要设计一个模块集(一个“包”)来同一处理声音文件和声音数据。存在几种不合的声音格局(平日由它们的扩大名来标识,例如:.wav, .aiff,.au ),于是,为了在不合类型的文件格局之间转换,你须要保护一个赓续增长的包集合。可能你还想要对声音数据做很多不合的操作(例如混音,添加反响,应用均衡 功能,创建一小我造效不雅),所以你要参加一个无穷流模块来履行这些操作。你的包可能会是这个样子(经由过程分级的文件体系来进行分组):
当导入这个包时,Python 经由过程 sys.path 搜刮路径查找包含这个包的子目次。
为了让 Python 将目次当做内容包,目次中必须包含 __init__.py 文件。这是为了避寐一?含有烂俗名字的目次无意中隐蔽了稍后在模块搜刮路径中出现的有效模块,比如 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 如许的语法时,这些子项必须是包,最后的子项可所以包或 模块,但不克不及是前面子项中定义的类、函数或变量。
大年夜 * 导入包
那么当用户写下 from sound.effects import *时会产生什么事?幻狭闼楝老是欲望在文件体系中找出包中所 有的子模块,然后导入它们。这可能会花掉落很长时光,并且出现等待之外的界线效应,导出了欲望只能显式导入的包。
__all__ = ["echo", "surround", "reverse"]
推荐阅读
HackerRank 近日对约 4 万名开辟者进行了查询拜访,并宣布了名为“2018 年开辟者技能申报”的查询拜访结不雅。有趣的是,申报发明,固然 Go、Kotlin 等新编程说话在所有开辟者的>>>详细阅读
地址:http://www.17bianji.com/lsqh/40501.html