最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過(guò)模塊化開發(fā)優(yōu)化代碼的技巧分享

 更新時(shí)間:2025年04月09日 10:02:52   作者:花小姐的春天  
模塊化開發(fā)就是把代碼拆成一個(gè)個(gè)“零件”,該封裝封裝,該拆分拆分,下面小編就來(lái)和大家簡(jiǎn)單聊聊python如何用模塊化開發(fā)進(jìn)行代碼優(yōu)化吧

寫個(gè)項(xiàng)目,文件夾里 .py 文件堆成山,變量名取到懷疑人生,函數(shù)到處復(fù)制粘貼,代碼改一次崩三回……每次打開項(xiàng)目,內(nèi)心就一個(gè)感受——“這都啥玩意兒?” 

放心,咱今天就來(lái)聊聊如何用模塊化開發(fā),拯救你的代碼,讓它井井有條、優(yōu)雅可讀,從此告別“屎山”!

什么是模塊化開發(fā)

簡(jiǎn)單來(lái)說(shuō),模塊化開發(fā)就是把代碼拆成一個(gè)個(gè)“零件”,該封裝封裝,該拆分拆分。就像搭樂高一樣,把不同的功能拆成一個(gè)個(gè)小塊,隨用隨取,既不浪費(fèi)時(shí)間,也不讓代碼亂成一鍋粥。

Python 里,模塊(module) 就是一個(gè) .py 文件,里面可以定義函數(shù)、類、變量,還可以包含可執(zhí)行代碼。多個(gè)模塊可以組成包(package),多個(gè)包再組成一個(gè)完整的項(xiàng)目。

比喻一下:

  • 模塊(module)= 樂高積木
  • 包(package)= 一套樂高玩具
  • 項(xiàng)目 = 拼好的樂高城堡 

說(shuō)了這么多,咱直接上代碼,看看到底怎么玩!

如何拆分代碼

假設(shè)我們要寫一個(gè)簡(jiǎn)單的計(jì)算器,支持加減乘除。一般人可能會(huì)直接在 calculator.py 里寫一堆函數(shù):

# calculator.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        raise ValueError("除數(shù)不能為0!")
    return a / b

這么寫倒也行,但問題來(lái)了

  • 如果以后還要加新功能,比如平方、開根號(hào),這個(gè)文件會(huì)越來(lái)越長(zhǎng)。
  • 代碼全堆在一個(gè) .py 里,復(fù)用性差,邏輯混亂。
  • 別人(包括未來(lái)的自己)接手這段代碼時(shí),容易迷失在一堆函數(shù)里。

改進(jìn)版:拆分成模塊

我們可以把不同功能拆分到不同的文件里,比如這樣:

calculator/
│── operations/
│   │── __init__.py
│   │── add.py
│   │── subtract.py
│   │── multiply.py
│   │── divide.py
│── main.py

然后,每個(gè)文件只處理自己的功能:

# operations/add.py
def add(a, b):
    return a + b
# operations/divide.py
def divide(a, b):
    if b == 0:
        raise ValueError("除數(shù)不能為0!")
    return a / b

最后,在 main.py 里這樣用:

from operations.add import add
from operations.divide import divide

print(add(10, 5))  # 15
print(divide(10, 2))  # 5.0

優(yōu)點(diǎn):

? 結(jié)構(gòu)清晰:每個(gè)功能各司其職,文件夾一目了然。

? 易維護(hù):以后加新功能,直接加新模塊,互不影響。

? 可復(fù)用:不同項(xiàng)目里可以直接復(fù)用這些模塊。

細(xì)節(jié)提示

  • __init__.py 的作用是把 operations/ 變成一個(gè) Python ,這樣我們才能用 from operations.add import add 這樣的方式導(dǎo)入。
  • 模塊的命名盡量簡(jiǎn)潔有意義,比如 add.py 而不是 this_is_add_function.py,文件名太長(zhǎng)會(huì)讓導(dǎo)入變得痛苦 

讓模塊更強(qiáng)大:使用 __init__.py

有時(shí)候,我們不想每次都 from operations.add import add,希望直接 from operations import add,那就要利用 __init__.py

# operations/__init__.py
from .add import add
from .subtract import subtract
from .multiply import multiply
from .divide import divide

這樣,我們就可以一次性導(dǎo)入所有操作:

from operations import add, divide

print(add(10, 5))  # 15
print(divide(10, 2))  # 5.0

很多 Python 開發(fā)者容易忽視的一點(diǎn)

如果 __init__.py不寫任何內(nèi)容,那 from operations import add 是會(huì)報(bào)錯(cuò)的,因?yàn)?Python 不知道 operations 這個(gè)包里有哪些東西能被導(dǎo)入。

你一定會(huì)遇到的問題

模塊導(dǎo)入失敗?ModuleNotFoundError

ModuleNotFoundError: No module named 'operations'

解決方案

確保你在正確的目錄下運(yùn)行 main.py,不能在 operations/ 里運(yùn)行。

main.py 開頭加上:

import sys
sys.path.append(".")  # 確保 Python 知道當(dāng)前目錄

import * 為什么不推薦

有人喜歡這樣寫:

from operations import *

看似很方便,但這其實(shí)是個(gè)坑,因?yàn)椋?/p>

  • 你不知道具體導(dǎo)入了哪些東西,可能會(huì)覆蓋已有的變量。
  • 代碼可讀性變差,別人(包括未來(lái)的你)會(huì)一臉懵逼。
  • __init__.py 里沒 __all__ 的話,這種方式甚至?xí)?bào)錯(cuò)。

所以,建議明確導(dǎo)入所需模塊,比如:

from operations import add, divide  # 一目了然

總結(jié)

  • 模塊化開發(fā)能讓代碼更清晰、可復(fù)用、易維護(hù),是寫好 Python 代碼的必備技能!
  • 一個(gè) .py 文件就是一個(gè)模塊,多個(gè)模塊組成包(package)。
  • __init__.py 可以幫助管理包的導(dǎo)入,但用法要注意。
  • 避免 import *,盡量使用顯式導(dǎo)入,代碼更可讀。

到此這篇關(guān)于Python通過(guò)模塊化開發(fā)優(yōu)化代碼的技巧分享的文章就介紹到這了,更多相關(guān)Python模塊化開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python常見類型轉(zhuǎn)換的小結(jié)

    Python常見類型轉(zhuǎn)換的小結(jié)

    本文主要介紹了Python常見類型轉(zhuǎn)換的小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python基于property()函數(shù)定義屬性

    python基于property()函數(shù)定義屬性

    這篇文章主要介紹了python基于property()函數(shù)定義屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析

    Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python Excel vlookup函數(shù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python中的不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型詳解

    python中的不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型詳解

    探尋python的數(shù)據(jù)類型是否可變,也可以更好的理解python對(duì)內(nèi)存的使用情況,下面這篇文章主要給大家介紹了關(guān)于python中不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • Python 取numpy數(shù)組的某幾行某幾列方法

    Python 取numpy數(shù)組的某幾行某幾列方法

    這篇文章主要介紹了Python 取numpy數(shù)組的某幾行某幾列方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python中g(shù)lobal與nonlocal比較

    python中g(shù)lobal與nonlocal比較

    這篇文章主要介紹了python中g(shù)lobal與nonlocal比較,global關(guān)鍵字用來(lái)在函數(shù)或其他局部作用域中使用全局變量,nonlocal關(guān)鍵字用來(lái)在函數(shù)或其他作用域中使用外層(非全局)變量,需要的朋友可以參考下
    2014-11-11
  • PyQt5顯示GIF圖片的方法

    PyQt5顯示GIF圖片的方法

    今天小編就為大家分享一篇PyQt5顯示GIF圖片的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 解決Pytorch 加載訓(xùn)練好的模型 遇到的error問題

    解決Pytorch 加載訓(xùn)練好的模型 遇到的error問題

    今天小編就為大家分享一篇解決Pytorch 加載訓(xùn)練好的模型 遇到的error問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法

    pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法

    最近在使用pip安裝python的時(shí)候遇到些問題,所以下面這篇文章主要給大家介紹了關(guān)于pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法,需要的朋友可以參考下
    2023-01-01
  • python將一個(gè)英文語(yǔ)句以單詞為單位逆序排放的方法

    python將一個(gè)英文語(yǔ)句以單詞為單位逆序排放的方法

    今天小編就為大家分享一篇python將一個(gè)英文語(yǔ)句以單詞為單位逆序排放的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論

朔州市| 沂源县| 红河县| 合川市| 周至县| 密山市| 鄱阳县| 阳谷县| 江山市| 太仓市| 滨海县| 乳山市| 中宁县| 邵阳县| 昌邑市| 武夷山市| 镇远县| 新丰县| 龙井市| 富平县| 保康县| 油尖旺区| 彩票| 红安县| 土默特左旗| 射阳县| 濮阳市| 浦北县| 华坪县| 康平县| 都昌县| 博白县| 广汉市| 台东县| 津南区| 准格尔旗| 兴山县| 嘉兴市| 浠水县| 芦溪县| 淮北市|