多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 模块 [TOC] ## 模块定义 1. 模块名要遵循Python变量命名规范,不要使用中文、特殊字符; 2. 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,**检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。** ``` mycompany # 包名,防止模块名冲突 ├─ web │ ├─ __init__.py # 表示该目录为一个模块包,而不是普通目录,该本身就是一个模块,而它的模块名就是mycompany,内容可以为空。 │ ├─ utils.py │ └─ www.py ├─ __init__.py ├─ abc.py └─ xyz.py ``` ## 使用模块 ### 编写hello模块 **hello.py** ```python #!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' __author__ = 'jason Zhou' import sys def test(): args = sys.argv print(args) # list所有的命令行参数 if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!') # 前面_的为私有函数,不应该在外部被引用 def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name) # 当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败。 if __name__=='__main__': test() ``` ### 使用hello模块 mymodule │ ├─ __init__.py │ ├─ hello.py │ └─ xyz.py └─ index.py ```python import mymodule.hello mymodule.hello.test(); # 导入多个模块 import module1,module2 # 使用别名 import mymodule.hello as hello hello.test(); # 从模块中导入一个指定的部分到当前命名空间中 from fib import fibonacci # 导入模块 fib 的 fibonacci 函数,也可以用','导入多个函数 # 把一个模块的所有内容全都导入到当前的命名空间 from math import * # 一次性引入 math 模块中所有的东西,不建议用 # 访问文档注释 hello.__doc__ ``` ## 测试代码 ```python if __name__ == '__main__': print('命令行执行才调用') __all__ = ['这里面放当前模块可被调用的方法'] ``` ## 第三方库 一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是: ```bash pip install Pillow ``` ## 模块搜索路径 默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中, 如果我们要添加自己的搜索目录,有两种方法: 1. 直接修改sys.path,添加要搜索的目录: 2. 设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。 ## 其他 1. 在python2中包要有__init__.py ## 模块发布与模块安装 https://app.yinxiang.com/shard/s12/nl/1992144/d6034627-25cf-47a4-81cc-5a9e3cd9b951