前言时刻:
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 numpy
from numpy import arange, where
import numpy as np
from numpy import arange as arrg
new_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.py
from b import *
# from .b import *
name2 = "java"
print(name) # python
create_b() # b like python
# b.py
name = '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.py
import sys
import os
sys.path.append(os.path.dirname(__file__) + '/test1')
from b import *
name2 = "java"
print(name) # python
create_b() # b like python
# b.py
name = '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 个元素,返回列表。
总结
参考文章: