Python基礎教程 用模組化來搭專案

2021-09-27 12:07:50 字數 2787 閱讀 8843

單模組化

檔案結構:

.

├── utils

│ ├── util.py

│ └── class_util.py

├── src

│ └── sub_main.py

└── main.py

'''

'''# utils/utils.py

defget_sum

(a, b)

:return a + b

# utils/class_utils.py

class

encoder

(object):

defencode

(self, s)

:return s[::

-1]class

decoder

(object):

defdecode

(self, s)

:return

''.join(reverse(

list

(s))

)

'''

'''# main.py

from utils.utils import get_sum

print

(get_sum(1,

2))########## 輸出 ##########

3

# src/sub_main.py

import sys

".."

)from utils.class_utils import

*encoder = encoder(

)decoder = decoder(

)print

(encoder.encode(

'abcde'))

print

(encoder.encode(

'edcba'))

########## 輸出 ##########

edcba

abcde

專案模組化

以下python**用命令列執行main.py會出錯,找不到proto.

├── proto

│ ├── mat.py

├── utils

│ └── mat_mul.py

└── src

└── main.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

defmat_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 =[[

0for _ 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.在檔案中強行修改sys.path[0]:

import sys

sys.path[0]

='/home/ubuntu/workspace/your_projects'

2.在python的虛擬環境中的activate檔案,增加:(windows系統中無效)

export pythonpath=

"/home/ubuntu/workspace/your_projects"

python 基礎篇 模組化

在做專案的時候,雖然你不可能把全世界的 都放到乙個資料夾下,但是類似模組化的思想還是要有的 那就是以專案的根目錄作為最基本的目錄,所有的模組呼叫,都要通過根目錄一層層向下索引的方式來 import。目錄結構 env.sh proto mat.py src main.py utils mat mul....

SeaJS模組化基礎

測試sea.js 檔案 define function require,exports,module exports.b function btn on click function 對外屬性,也可以通過return語句直接返回介面,甚至簡化為define module.exports 檔案 def...

模組化小基礎

今天整理下模組化,從基本運用到實踐。html直接雙擊開啟會報錯,需要在伺服器下執行。lochost 8080 import 存在於變數提公升。匯出模組如果內容有定時器更改,外面引入內容也會更改。import 語法 不能寫入if 語句之類中的。use strict 預設嚴格模式。基礎1.01.js e...