前言时刻:
1、模块
通常我们写的以.py的文件(a.py),称之为脚本,如果另外一个脚本(b.py)引用了 a.py ,则可称 a.py 为模块。
模块有啥用呢?可以认为一个模块是一个功能吧,因为一般都是一个模块封装一个功能,利于理解代码。
绝对路径:就是相对于当前脚本所在文件夹路径基础上的偏移。
相对路径:就是该文件在系统文件中的全部路径。s
1.1 导入模块
导入模块方式:
import xx,会导入该模块 xx 中的所有成员,包括变量、函数、类等,这种导入方式容易与其他模块中的命名冲突。form xx import a, b,从模块 xx 中导入指定的成员
解决命名冲突问题,可以起个别名如:import xx as xxyy,from xx import a as xxa。当使用import xx方式时,可以自由控制要导入的成员,需要在模块中添加__all__ = [a, b],里面存放的是成员名称。
例子:
import numpyfrom numpy import arange, whereimport numpy as npfrom numpy import arange as arrgnew_arr = arrg(8)pos = where(new_arr==3)print(f"一维矩阵:{new_arr}, 3的位置:{pos}")# 一维矩阵:[0 1 2 3 4 5 6 7], 3的位置:(array([3]),)new_arr2 = np.arange(8)pos2 = np.where(new_arr2==3)print(f"一维矩阵:{new_arr2}, 3的位置:{pos2}")# 一维矩阵:[0 1 2 3 4 5 6 7], 3的位置:(array([3]),)
1.2 相对路径导入
设项目路径如下:
test├── a.py└── b.py
# a.pyfrom b import *# from .b import *name2 = "java"print(name) # pythoncreate_b() # b like python# b.pyname = 'python'def create_b()->str:print('b like python')return "True"if __name__ == '__main__':create_b()
在 a 中调用 b 模块是采用相对目录,.b 中的 .表示脚本当前目录,每多一个.就向上进一级。
1.3 绝对路径导入
test├── a.py├── test1│ └── b.py└── test2
解释:__file__是当前运行脚本的绝对路径,os.path.dirname(path):获取该路径的以最后一个路径分隔符分割后的前半部分,相对应的是os.path.basename(path):则获取的是后半部分的名称。
sys.path:存放所有可寻找模块的文件夹路径,默认是当前 py脚本运行文件夹路径,以及Python 自带的模块库文件夹路径。
# a.pyimport sysimport ossys.path.append(os.path.dirname(__file__) + '/test1')from b import *name2 = "java"print(name) # pythoncreate_b() # b like python# b.pyname = 'python'def create_b()->str:print('b like python')return "True"if __name__ == '__main__':create_b()
2、random模块
这个 random 模块很重要,重点掌握。
1. `random.random()`,随机获取[0.0, 1.0]中的浮点数。2. `random.randint(a, b)`,随机获取[a, b)中的整数。3. `random.uniform(a, b)`,随机获取[a, b)之间的的浮点数。4. `random.shuffle(x)`,打散迭代对象 x 中的元素顺序,其中x必须是可变数据类型。5. `random.sample(x, k)`,从 x 中随机随机取 k 个元素,返回列表。
总结
参考文章:
