• python 基础篇 模块化


    在做项目的时候,虽然你不可能把全世界的代码都放到一个文件夹下,但是类似模块化的思想还是要有的——那就是以项目的根目录作为最基本的目录,所有的模块调用,都要通过根目录一层层向下索引的方式来 import。

    目录结构

    ├── env.sh
    ├── proto
    │   └── mat.py
    ├── src
    │   └── main.py
    └── utils
        └── mat_mul.py
    
    # proto/mat.py
    
    class Matrix(object):
        def __init__(self, data):
            self.data = data
            self.n = len(data)
            self.m = len(data[0])
    
    # utils/mat_mul.py
    
    from proto.mat import Matrix
    
    def mat_mul(matrix_1: Matrix, matrix_2: Matrix):
        assert matrix_1.m == matrix_2.n
        n, m, s = matrix_1.n, matrix_1.m, matrix_2.m
        result = [[0 for _ in range(n)] for _ in range(s)]
        for i in range(n):
            for j in range(s):
                for k in range(m):
                    result[i][k] += matrix_1.data[i][j] * matrix_2.data[j][k]
    
        return Matrix(result)
    
    # src/main.py
    
    from proto.mat import Matrix
    from utils.mat_mul import mat_mul
    
    
    a = Matrix([[1, 2], [3, 4]])
    b = Matrix([[5, 6], [7, 8]])
    
    print(mat_mul(a, b).data)
    
    ########## 输出 ##########
    
    [[19, 22], [43, 50]]
    

    方法1 将 当前模块的根目录 加入到环境变量 PYTHONPATH,在终端中 执行 source env.sh 使其在终端中临时生效。

    # env.sh
    
    #!/bin/bash
    
    export PYTHONPATH=$PYTHONPATH:$(PWD)
    

    方法2 修改 sys.path

    import sys
    sys.path[0] = '/home/ubuntu/workspace/your_projects'
    
  • 相关阅读:
    centos7下如何使用udev配置asm磁盘
    ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200]
    安装grid时报INS-40404错误
    clickhouse编译安装
    centos7通过rc.local文件添加自启动服务
    Error in invoking target 'agent nmhs' of makefile
    打补丁(18370031)
    2020 HFCTF
    2020省赛决赛
    2020西湖论剑
  • 原文地址:https://www.cnblogs.com/hiyang/p/12634714.html
Copyright © 2020-2023  润新知