Python淺析:Python變數作為配置檔案格式的利與弊

weixin_33918357發表於2018-10-15

    本篇文章小編就給大家講述一下用Python變數作為配置檔案格式的利與弊

    配置檔案的格式非常多,有ini、xml、yaml等等,各有優點,適合不同的場景。然而,由於Python語言的解釋性和動態性,給Python程式設計師帶來了另一個選擇:直接用Python變數作為配置檔案格式,相信Python程式設計師更傾向於這種形式。但是,在享受便利的同時,不能忽略當中存在的不足。

9891608-0ee96ddb5fa4f12e.jpg

    用Python變數作為配置檔案格式

    相信大部分Python程式設計師都不會陌生,把配置直接用變數的形式寫到一個模組中,在需要讀取配置的地方,直接import模組就能得到配置變數。這得益於:

    Python是解釋性語言,無需編譯,修改後的原始檔直接可以執行;

    Python優雅的語法,直觀的變數定義,靈活的資料型別。

    配置檔案示例:

    <!-- lang: python -->

    # config.py

    listen_port = 4444

    use_epoll = True

    在讀取配置的地方:

    <!-- lang: python -->

    import config

    port_num = config.listen_port

    if config.use_epoll:

    一、優點

    直接用python變數作為配置檔案格式的優點是顯然的:

    不用任何parser(直譯器)來解釋配置檔案。Python直譯器本身就擔當了parser的角色。

    使用自然、方便,直接可用,和其他變數的使用沒有任何區別。

    學習成本低,不需要學習其他配置檔案的格式和語法。

    如此明顯的優勢,相信用Python程式設計的時候,如無特殊情況,必定會選用這種形式的配置檔案。

    接下來,我們說說**“特殊情況”**,什麼情況下應該避免使用Python變數作為配置檔案。

    二、缺點

    方便之處在於不用parser,缺點也在於不用parser。

    通常情況,配置檔案是人負責寫,程式負責讀。現在,程式讀配置檔案非常方便,人寫配置檔案也非常方便。

    但是會不會存在這樣的情況,配置檔案既要讓人寫,也要讓程式碼寫。顯然,這種情況是存在的,比如:程式的配置可以直接改配置檔案,同時也提供了一套介面讓使用者在介面上修改配置。在介面上修改的配置,最終也是反映到配置檔案中,這就要求程式碼修改配置檔案了。

    那麼,我們獲得配置檔案變數的值容易,把修改後的值寫回去容易嗎?

    容易:按照語法格式,變數 = 值,寫到配置檔案即可。

    不容易:由於沒有任何parser的支援,我們我們只知道有這個變數,知道這個變數的值,但是,不能定位到原來配置檔案中變數的位置,這就限制了我們無法在原來的位置上修改,只能重新生成整個配置檔案。

    重新生成配置檔案會帶來什麼問題?

    註釋丟失,我們沒法獲得配置檔案的註釋,也就無法重新生成,所有註釋都將丟失。雖然不影響功能,但是使用者下次想要手動修改的時候,沒有了先前的註釋非常不方便。

    變數順序混亂,在Python直譯器看來,配置檔案的變數是沒有順序,但是現實中,使用者對配置變數的理解是功能相近分成“一組”,根據作用的大小、先後排出“順序”。順序混亂了,使用者想要手動修改的時候將會非常困惑。

    結論

    是否應該使用Python變數作為配置檔案格式?取決於程式的使用場景。It depends.

相關文章