先来一个简单的表面理解 import random random即为模块 random.py文件就是调用的对象
如果一个模块调用了其他模块 解释器会先把其他模块拿来编译成pyc文件放入缓存(其他模块的字节码,可以到时候直接拿来用,而省略编译过程)
from sendmsg import test1 从sendmsg模块中导入test1方法 如果from sendmsg import * from resmsg import *两个里面存在同名方法 那么后者会覆盖前者 所以要少用import *
关于模块的测试:
在模块中测试代码上加上
if __name__=="__main__":
test() #即自己调用的__name__时候是__main__ 其他人调用的时候是模块名 只有自身调用执行的时候执行测试模块test()
__all__的作用:
为了防止import *把不需要的方法导入 __all__=["test1"] 使得其他模块只能调用test1()
有__init__.py模块的文件夹成为包 在__init__.py中写入__all__=["模块名"] 则导入包的时候才能调入其中的模块
程序导入包的时候会先执行__init__.py文件中的内容 包用来把功能相似的模块放在一起
模块的发布:
import os 无论何时都能导入 不需要关注文件所在路径
建立setup.py 在里面添加
from distutils.core import setup setup( name='eif', #名字 version="1", #版本 author='IT_NEU_Lee', author_email='mcarras2@illinois.edu , sahandha@gmail.com', scripts=[], py_modules=['TestMsg.eif','version'], #调用的包已经下面的模块 packages=[], license='License.txt', description='Extended Isolation Forest for anomaly detection', long_description=read('README.md'), url='https://github.com/sahandha/eif', install_requires=["numpy"], )
然后用python setup.py build 把模块导入系统中
python setup.py sdist 发布打包生成压缩包 .tar.gz
给程序传参
import sys
sys.argv即可以传递参数