导图社区 程序模块结构布局知识学习笔记
程序模块结构布局知识学习笔记,包括模块概述、名称空间、模块结构 & 布局等内容,需要的可以看下。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
程序模块结构布局知识学习笔记
模块概述
推荐导入顺序
标准库模块
第三方模块
自定义模块
模块就是程序
搜索路径
解释器
遇到 import 语句
导入「 搜索路径 」中的 模块
包括
当前目录
shell 变量 PYTHONPATH 下每个目录
标准库的安装路径
添加
直接修改 sys.path
import sys
sys.path.append(' ')
PYTHONPATH
操作系统「 环境变量 」
export PYTHONPATH=$ PYTHONPATH:~/python
永久执行
.bashrc
dir()
一个模块里定义的
所有模块, 变量 & 函数
字符串列表
包
vs
模块
用来
组织「 Python」 代码
.py 文件
组织 「 模块」
包含 _ _init_ _.py 的 「 目录」
内涵
分层次的 「 文件目录结构」
子包
子包下的子包
Python 应用环境
由「 功能相似的模块」 构成
每个包/子包
_ _init_ _.py
必有
初始化模块
导入模块时必需
可以是 「 空文件」
用于标识
当前文件夹是一个「 包」
访问
句点属性标识符
导入
import
from Phone.Mobile import Analog
绝对导入
import 语句
总是「 绝对导入」
from Phone.Mobile.Analog import dial
相对导入
只应用于
from ... import ...
from .Analog import dial
from ..Fax import G3.dial
名称空间
载入顺序
内建名称空间
_ _builtins_ _
全局名称空间
局部名称空间
名称查找
与「 载入顺序」相反
局部变量会覆盖「 全局变量」
BIF
globals()
locals()
返回字典
用于
任何需要「 放置数据」的地方
e.g.
函数
func.attribute = ...
module.attribute = ...
类(实例)
obj.attribute = ...
模块结构 & 布局
一个示例
结构布局
起始行
类 Unix 下使用
可直接执行脚本
无需调用解释器
模块文档
简要介绍
模块功能 & 重要全局变量
访问方法
module._ _ doc_ _
模块导入
导入「 主程序」需要的模块
变量定义
全局变量
除非必须,尽量使用「 局部变量」
本模块中可直接使用
类定义
类的文档变量
class.__doc__
函数定义
module.function()
函数的文档变量
function._ _doc_ _
主程序
Python 库风格
仅一个主模块
主程序模块
被直接执行
& 导入其他模块
其他模块
创建目的
被调用
并非作为
独立执行脚本
注意
顶级代码
尽可能少写
功能代码
尽量封装
到函数 or 类中
通常只有 「 主程序模块」
有大量「 顶级代码」
标准文件模板
前两行
标准注释
第 1 行
#!/usr/bin/env python
第 2 行
# -*- coding: utf-8 -*-
第 4 行
模块的文档注释
‘ a test module ’
事实上
任何模块的第一个字符串
都被视为模块的文档注释
第 6 行
_ _ author _ _
补充
第三方模块安装
easy_install
pip install module_name
_ _ future_ _
把下一个新版本的特性
导入到当前版本
Tips
目的
1 优先导入某模块
2 不存在该模块时
降级使用
另一模块
try:import cStringIO as StringIO except ImportError: import StringIO
指定别名后
无论导入哪个模块
StringIO 均可正常工作
运行测试
_ _name_ _ == '_ _main_ _'
作为 「 主程序」 运行
True
被导入另一个程序
False
模块名称
使用场景
模块若是
通过命令运行
则执行额外代码
被导入
像普通模块一样使用
if _ _ name_ _ == ' _ _ main_ _ ' :. . .
探索模块
1 import module
2 dir(moudle)
查看所有属性
函数、类、变量
3 module._ _all_ _
所有
模块的公有接口
即
from module import *
4 help()
5文档
print(func._ _doc_ _)
6 源代码
print(module._ _file_ _)
分支主题 7