用python變量做爲配置文件格式的利與弊

用Python變量做爲配置文件格式的利與弊

配置文件的格式很是多,有ini、xml、yaml等等,各有優勢,適合不一樣的場景。然而,因爲Python語言的解釋性和動態性,給Python程序員帶來了另外一個選擇:直接用Python變量做爲配置文件格式,相信Python程序員更傾向於這種形式。可是,在享受便利的同時,不能忽略當中存在的不足。python

用Python變量做爲配置文件格式

相信大部分Python程序員都不會陌生,把配置直接用變量的形式寫到一個模塊中,在須要讀取配置的地方,直接import模塊就能獲得配置變量。這得益於:程序員

  1. Python是解釋性語言,無需編譯,修改後的源文件直接能夠運行;
  2. 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變量做爲配置文件格式的優勢是顯然的:code

  1. 不用任何parser(解釋器)來解釋配置文件。Python解釋器自己就擔當了parser的角色。
  2. 使用天然、方便,直接可用,和其餘變量的使用沒有任何區別。
  3. 學習成本低,不須要學習其餘配置文件的格式和語法。

如此明顯的優點,相信用Python編程的時候,如無特殊狀況,一定會選用這種形式的配置文件。xml

接下來,咱們說說**「特殊狀況」**,什麼狀況下應該避免使用Python變量做爲配置文件。編譯

缺點

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

一般狀況,配置文件是負責程序負責。如今,程序讀配置文件很是方便,人寫配置文件也很是方便。變量

可是會不會存在這樣的狀況,配置文件既要讓寫,也要讓代碼寫。顯然,這種狀況是存在的,好比:程序的配置能夠直接改配置文件,同時也提供了一套界面讓用戶在界面上修改配置。在界面上修改的配置,最終也是反映到配置文件中,這就要求代碼修改配置文件了。配置

那麼,咱們得到配置文件變量的值容易,把修改後的值寫回去容易嗎?

  • 容易:按照語法格式,變量 = ,寫到配置文件便可。
  • 不容易:因爲沒有任何parser的支持,咱們咱們只知道有這個變量,知道這個變量的值,可是,不能定位到原來配置文件中變量的位置,這就限制了咱們沒法在原來的位置上修改,只能從新生成整個配置文件。

從新生成配置文件會帶來什麼問題?

  • 註釋丟失,咱們無法得到配置文件的註釋,也就沒法從新生成,全部註釋都將丟失。雖然不影響功能,可是用戶下次想要手動修改的時候,沒有了先前的註釋很是不方便。
  • 變量順序混亂,在Python解釋器看來,配置文件的變量是沒有順序,可是現實中,用戶對配置變量的理解是功能相近分紅「一組」,根據做用的大小、前後排出「順序」。順序混亂了,用戶想要手動修改的時候將會很是困惑。

結論

是否應該使用Python變量做爲配置文件格式?取決於程序的使用場景。It depends.

相關文章
相關標籤/搜索