标签:数学运算 系统 sdn 区分 load python3 交互 并且 相对
概述
背景
准备
os
python
shell
概述
场景
场景1: 使用 math 库
场景
结果
使用 math 库
import math
math.sqrt(<arg>)
这个 不知道怎么来 的 math, 就这样帮助我们完成了任务
场景2: 代码复用
场景
所以
模块的好处
书上也没有明确写
我的看法
分解工程
方便复用
写模块
概述
模块
模块 是 写有 python 代码的文件
和 脚本 的区别
脚本
模块
其实本质上, 并没有什么区别
模块里有什么
概述
命名规范
字符集
书写方式
拓展名
例子
module.py
my_module.py
其他
python 工程里的文件名
模块名里能否出现数字
能
脚本
结论: 能用, 但是不建议
问题: 我随便写个模块, 如何才能导入
解答
路径
查看当前路径
# 进入 python 命令行
# git-bash 下进入交互式命令行的方式
> winpty python
# 查看当前路径
## 1. 导入 sys
import sys
## 2. 导入 pprint, 打印的相对友好些, 直接 print 也可以
import pprint
## 3. 查看路径
pprint.pprint(sys.path)
结果
[‘‘,
‘C:\\Programs\\Python\\Python37\\python37.zip‘,
‘C:\\Programs\\Python\\Python37\\DLLs‘,
‘C:\\Programs\\Python\\Python37\\lib‘,
‘C:\\Programs\\Python\\Python37‘,
‘C:\\Programs\\Python\\Python37\\lib\\site-packages‘]
解释
路径们
也就是说
问题
解决
方式1: 运行时添加
代码
# 1. 添加到 path 数组最前
sys.path.insert(<path>)
# 2. 添加到 path 数组最后
sys.path.append(<path>)
特性
疑问: 添加到 最前 和 最后 有什么区别
方式2: 环境变量
变量名
PYTHONPATH
PATH
结果
问题
解答
优先级
概述
内容
概述
方法1: import 基础
代码
# 1. 导入 单个模块
import sys
# 2. 导入 多个模块
import sys, pprint
# 3. 导入模块, 并起一个别名
import sys as system
# 4. 导入多个模块, 并起别名
import sys as system, pprint as prettyprint
使用
# 1. 使用属性时, 需要添加 模块名 作为 前缀
sys.path
# 2. 有别名时, 也是如此
system.path
疑问: 有没有办法, 可以不加前缀呢
方法2: from import
代码
# 1. 从 sys 模块, 导入 path
from sys import path
# 2. 导入多个
from sys import path, argv
# 3. 起别名
from sys import path as p
# 4. 多个别名
from sys import path as p, argv as v
使用
# 直接使用即可
print(path)
注意
同样的模块, 只会 import 一次
就算你运行多次 import 语句, 也只会 import 一次
这样可以避免 出现循环依赖 时的 无限死循环
如果你需要重新 import, 需要使用下列语句
import importlib
import.reload(<module>)
模糊导入: from
代码
# 可以一次导入 模块愿意暴露 的所有内容
# 对应的, 其他单词导入 确定内容的导入, 被称为 精确导入
from sys import *
不建议使用
不会导入导入 _
开头的 变量 和 方法
all
作用
查看
# 并不是 所有的模块 都有
# sys 是没有的
import copy
copy.__all__
定义
# 这些都是 属性, 函数, 类 的名字
__all__ = ["Error", "copy", "deppcopy"]
如果不定义
_
开头的内容概述
场景: 想做要给测试
场景
解决
代码
# 将 测试代码, 放到 这个块里, 即可
if __name__ == ‘__main__‘:
name
作用域名称
作用域
作用
概述
包
划分层次结构的目录
内容
一段往事
找不到模块
解决
概述
作用
python 文件
语句
定义 变量, 方法
包的 标识
限定 模糊导入 的范围 - from
限定范围
# 模糊导入时, 只导入 以下模块
# 可以递归
# 精确导入时, 可以指定不在 __all__ 里的模块
# 如果不定义 __all__, 则暴露所有 非`_`开头的内容, 思路 和 模块一致
__all__ = ["<moduleName01>", "<moduleName02>", "<moduleName03>"]
ref
后续
标签:数学运算 系统 sdn 区分 load python3 交互 并且 相对
原文地址:https://www.cnblogs.com/xy14/p/13053080.html