type
status
date
slug
summary
tags
category
icon
password

Python模块

参考链接

包(package)与文件夹(directory)

首先我们需要明白包与文件夹的区别,就比如我们用pycharm右键新建的时候,会有package与directory选项,最开始我是觉得一样的,package无非就是会自动创建一个_ _ init _ _.py文件(里面啥都没有,但是你把他删了之后,package自动就会变成directory,最直观的就是图标上的黑点没了)
其实,Python检测到一个目录下存在_ _ init _ _.py文件时,就会把它当成一个模块(module),可以为空,也可以有很多内容。

_ _ init _ _.py _ _ all _ _ _ _ name _ _ _ _ doc _ _ import

  1. _ _ init_ _.py 文件:这个文件,就像一个标识符一样,用来表明一个文件夹是python包还是一般文件夹,如果文件夹中存在该文件,就是python包
    1. 用途:当用于import对象时,可以识别出哪些是可以导入的包,哪些只是一般文件夹可以在其中导入需要的对象,然后通过在执行程序中import package来引用这些包,所以简化了执行程序,因为每次导入package的时候会自动执行init.py;但最好不要在这里写自己的模块,该文件越简单越好_ _ all _ _参数,只用于指定 from package import * 时,导入的包是哪些,不需要的包可以先不导入;并不影响from package import module/package、import package.module等形式的导入
      注意:该文件可以为空,即不做操作,但是package必须要有这个文件
  1. import:用于导入包、函数、变量、类等;那么import干了些啥?(sys.path是可以修改的,且从package包导入模块需要用 from package import ... 形式)
    1. _ _ name _ :用于判断当前模块是不是主程序文件(主执行),也就是查看 _ _ name _ _ 的值是否为 ' _ _ main _ _' ,如果是则该程序属于主程序文件,如果不是则显示该文件的文件名
    1. _ _ doc _ _:模块的注释文本,例如函数或者类的说明,用 '''...''' 三引号形式包围
    1. _ _ all _ _只用于控制from package import * 中导入的包,在 _ _ init _ _.py中定义

    目录结构

    Project

    directory

    directory_a.py
    directory_b.py

    package

    _ _ init _ _.py
    package_a.py
    package_b.py

    package_test

    _ _ init _ _.py
    package_test_a.py
    package_test_b.py

    导入

    directory_b.py中导入directory_a.py中的方法

    package_test_b.py中导入package_test_a.py中的方法

    package_b.py中导入package_a.py中的方法

    package_b.py中导入package_test_a.py中的方法

    package_test_b.py中导入package_a.py中的方法

    directory_b.py中导入package_a.py中的方法

    python变量重载问题python模块记录