Python之路day15-模块_相对绝对路径导入_random

1,559次阅读
没有评论

前言时刻:

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],里面存放的是成员名称。

例子:

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 个元素,返回列表。

总结

参考文章:

2
西园公子
版权声明:本站原创文章,由西园公子2021-06-27发表,共计1708字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
载入中...