美文网首页
Python 包或模块的导入

Python 包或模块的导入

作者: welder77 | 来源:发表于2022-12-10 18:27 被阅读0次
    image.png
    https://www.processon.com/view/link/6395b0bf1efad451e01af74d

    总结:

    1. 导入包或模块的顺序和范围可以通过打印sys.path来查询到,通过上图的范例可以知道,通常会优先导入.py同目录和父目录下的模块或包,随后再是python安装目录中的site-packages目录下的模块或包。
      p.s. 有时候明明在执行的py文件同目录放了一个包,但最后执行时,还是导入了site-packages目录下的模块或包,这是为什么哪?原因就在于__init__.py或包中又导入了site-packages目录下的模块或包

    2. 导入一个模块时,如果模块中除了函数,类和变量外,也包含一些未缩进的执行语句,如print("xxx"),那么此模块被其他模块导入后,这些执行语句也会被执行。可以通过if __name__ == "__main__":来排除。

    3. 当一个文件夹的根目录,包含了__init__.py,这个文件夹就不是一个文件夹,而是一个Python包了。
      我们可以把整个文件夹理解为一个很大的类,其中的子文件夹或.py文件是这个很大的类中的子类,再小就是这个py文件中包含的函数,类或变量了。
      __init__.py文件默认是空的。但也可以再其中导入一些其他的模块或包。

    一个简单的例子:

    文件结构如下:
    Folder
    |- __init__.py
    |- filename.py
    |- folder2
         |- filename2.py
    
    from folder import filename  #导入filename 模块
    或
    from folder.folder2 import filename2 #导入filename2 模块
    
    1. 当我们自己写了一些常用模块或者包,希望自己所有其他的代码都能调用到时,除了把整个包复制到site-packages目录下之外,也可以在site-packages目录下新建一个.pth文件,并在其中指向自己常用模块或者包所在的路径。

    2. from xxx import * 会导入一个模块或包下的所有函数,类或变量,但下划线开头的类,函数或变量除外。

    相关文章

      网友评论

          本文标题:Python 包或模块的导入

          本文链接:https://www.haomeiwen.com/subject/hshxqdtx.html