PyCharm中Directory与Python package的区别

本文详细介绍了Python中的模块和包的概念,模块是一个包含函数和定义的.py文件,而包则是一个包含模块的目录,内部有__init__.py文件。__init__.py在导入机制中起到关键作用,通过定义__all__变量可以控制import *时导入的模块。文章还提及了__name__变量在判断文件是被调用还是直接执行时的应用,以及良好的Python文件结构实践。
摘要由CSDN通过智能技术生成

https://www.cnblogs.com/LancyWu/p/7283889.html

Python有一种方法将定义函数放在一个文件中,并在脚本中使用它们,这样的文件叫做模块,一个模块中的定义可以被导入到其他模块,或者主模块中。

简单来说在python中模块就是指一个py文件,如果我们将所有相关的代码都放在一个py文件中,则该py文件既是程序由是模块,但是程序和模块的设计目的是不同的,程序的目的是为了运行,而模块的目的是为了其他程序进行引用

Dictionary
Dictionary在pycharm中就是一个文件夹,放置资源文件,对应于在进行JavaWeb开发时用于放置css/js文件的目录,或者说在进行物体识别时,用来存储背景图像的文件夹。该文件夹其中并不包含_ _ init.py_ _文件

Python package
对于Python package 文件夹而言,与Dictionary不同之处在于其会自动创建_ _ init.py_ 文件。
简单的说,python package就是一个目录,其中包括一组模块和一个
_ init.py_ _文件。

Image/
_init _.py
jpg.py
tiff.py
bmp.py
只要image目录是我们程序目录的子目录,我们就可以导入image目录下的任意模块来为我们所用,使用时可如下:
在这里插入图片描述

_ _ init_ _.py

该文件与Python的import机制有关,这关乎到你的哪些.py文件是对外可访问的。有些时候,如果一个包下有很多模块,在调用方import如此多模块是很费事,且不优雅的,此时可以通过修改_ _ init_ .py来完成该任务。
_ init_ .py中定义特殊变量_ all_ ,将要包含的模块复制给该变量,例如在Image/ _ init_ .py中定义 all _=[‘tiff’,’bmp’,’jpg’],这里的all 对应的就是 from …import * 中*代指的模块,此时在引用方使用如下语句:
在这里插入图片描述

其实_ _ init_ .py可以为空,当其为空时,from Image import * 将Image包下所有的模块都进行引用,如果想要控制引用的模块,则可以自行定义 all _

一份程序为了区分主动执行还是被调用,Python引入了变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为’main

所以会经常看到别人的代码这么写,同时也是典型的python文件结构:

#/usr/bin/env/ python            #(1) 起始行
#"this is a test module"          #(2) 模块文档(文档字符串)
import sys
import os              #(3) 模块导入

debug = True              #(4) (全局)变量定义
class FooClass (object):
    'foo class'
    pass                           #(5) 类定义(若有)
def main():
    'test function'
    foo = FooClass()
    if debug:
        print 'ran test()'         #(6) 函数定义(若有)
if __name__ == '__main__':
    main()

若是文件主动执行了,则最好写成跟上面的例子一样,main之前不要有可执行代码,这样做到程序从main()开始,流程逻辑性强

若是文件作为模块被调用,则可以不用写main(),从上而下顺序执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值