python常见的import导包技巧

2021年09月15日 阅读数:1
这篇文章主要向大家介绍python常见的import导包技巧,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1.控制模块被所有导入的内容

当使用’from module import *’ 语句时,但愿对从模块或包导出的符号进行精确控制。在你的模块中定义一个变量 “_ all _” 来明确地列出须要导出的内容。python

# somemodule.pydef spam():    passdef grok():    passblah = 42# Only export 'spam' and 'grok'__all__ = ['spam', 'grok']


尽管强烈反对使用 ‘from module import *’, 可是在定义了大量变量名的模块中频繁使用。若是你不作任何事, 这样的导入将会导入全部不如下划线开头的。另外一方面,若是定义了 “_ all _” , 那么只有被列举出的东西会被导出。ruby

若是你将 “_ _all__" 定义成一个空列表, 没有东西将被导入。若是 " _all _” 包含未定义的名字, 在导入时引发AttributeError。微信

2.将模块分割成多个文件spa

你想将一个模块分割成多个文件。可是你不想将分离的文件统一成一个逻辑模块时使已有的代码遭到破坏。
程序模块能够经过变成包来分割成多个独立的文件。考虑下下面简单的模块:.net

# mymodule.pyclass A:    def spam(self):        print('A.spam')
class B(A): def bar(self): print('B.bar')

假设你想把 mymodule.py 分为两个文件,每一个定义的一个类。要作到这一点,首先用mymodule目录来替换文件mymodule.py。在这个目录下,建立如下文件:code

mymodule/    __init__.py    a.py    b.py

在a.py文件中插入如下代码:
orm

# a.pyclass A:    def spam(self):        print('A.spam')

在b.py文件中插入如下代码ip

# b.pyfrom .a import Aclass B(A):    def bar(self):        print('B.bar')

最后,在 _ init _.py 中,将2个文件粘合在一块儿:get

# __init__.pyfrom .a import Afrom .b import B

若是按照这些步骤,所产生的包MyModule将做为一个单一的逻辑模块:
string

>>> import mymodule>>> a = mymodule.A()>>> a.spam()A.spam>>> b = mymodule.B()>>> b.bar()B.bar>>>

本文分享自微信公众号 - pythonista的平常(gh_fc70d5d98d3f)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。