前言时刻:

1、模块

通常我们写的以.py的文件(a.py),称之为脚本,如果另外一个脚本(b.py)引用了 a.py ,则可称 a.py 为模块。

模块有啥用呢?可以认为一个模块是一个功能吧,因为一般都是一个模块封装一个功能,利于理解代码。

绝对路径:就是相对于当前脚本所在文件夹路径基础上的偏移。

相对路径:就是该文件在系统文件中的全部路径。s

1.1 导入模块

导入模块方式:

  1. import xx,会导入该模块 xx 中的所有成员,包括变量、函数、类等,这种导入方式容易与其他模块中的命名冲突。
  2. form xx import a, b,从模块 xx 中导入指定的成员

解决命名冲突问题,可以起个别名如:import xx as xxyyfrom xx import a as xxa。当使用import xx方式时,可以自由控制要导入的成员,需要在模块中添加__all__ = [a, b],里面存放的是成员名称。

例子:

  1. import numpy
  2. from numpy import arange, where
  3. import numpy as np
  4. from numpy import arange as arrg
  5. new_arr = arrg(8)
  6. pos = where(new_arr==3)
  7. print(f"一维矩阵:{new_arr}, 3的位置:{pos}")
  8. # 一维矩阵:[0 1 2 3 4 5 6 7], 3的位置:(array([3]),)
  9. new_arr2 = np.arange(8)
  10. pos2 = np.where(new_arr2==3)
  11. print(f"一维矩阵:{new_arr2}, 3的位置:{pos2}")
  12. # 一维矩阵:[0 1 2 3 4 5 6 7], 3的位置:(array([3]),)

1.2 相对路径导入

设项目路径如下:

  1. test
  2. ├── a.py
  3. └── b.py
  1. # a.py
  2. from b import *
  3. # from .b import *
  4. name2 = "java"
  5. print(name) # python
  6. create_b() # b like python
  7. # b.py
  8. name = 'python'
  9. def create_b()->str:
  10. print('b like python')
  11. return "True"
  12. if __name__ == '__main__':
  13. create_b()

在 a 中调用 b 模块是采用相对目录,.b 中的 .表示脚本当前目录,每多一个.就向上进一级。

1.3 绝对路径导入

  1. test
  2. ├── a.py
  3. ├── test1
  4. └── b.py
  5. └── test2

解释:__file__是当前运行脚本的绝对路径,os.path.dirname(path):获取该路径的以最后一个路径分隔符分割后的前半部分,相对应的是os.path.basename(path):则获取的是后半部分的名称。

sys.path:存放所有可寻找模块的文件夹路径,默认是当前 py脚本运行文件夹路径,以及Python 自带的模块库文件夹路径。

  1. # a.py
  2. import sys
  3. import os
  4. sys.path.append(os.path.dirname(__file__) + '/test1')
  5. from b import *
  6. name2 = "java"
  7. print(name) # python
  8. create_b() # b like python
  9. # b.py
  10. name = 'python'
  11. def create_b()->str:
  12. print('b like python')
  13. return "True"
  14. if __name__ == '__main__':
  15. create_b()

2、random模块

这个 random 模块很重要,重点掌握。

  1. 1. `random.random()`,随机获取[0.0, 1.0]中的浮点数。
  2. 2. `random.randint(a, b)`,随机获取[a, b)中的整数。
  3. 3. `random.uniform(a, b)`,随机获取[a, b)之间的的浮点数。
  4. 4. `random.shuffle(x)`,打散迭代对象 x 中的元素顺序,其中x必须是可变数据类型。
  5. 5. `random.sample(x, k)`,从 x 中随机随机取 k 个元素,返回列表。

总结

参考文章: