常量是在整個程序執(zhí)行過程中保持不變的值,雖然 Python 中沒有常量的概念,但可以使用多種技術(shù)來創(chuàng)建常量。在本文中,我們將介紹在 Python 中定義常量的不同方法。 使用大寫的變量名稱Python 中的一個常見約定是使用大寫變量名稱來指示應(yīng)將變量視為常量,提示其他開發(fā)人員不應(yīng)修改該值。 PI = 3.141592653589793
EULER_NUMBER = 2.718281828459045
MAX_VALUE = 100
在上面的示例中,通過使用大寫字母定義了常量。但是,請務(wù)必注意,Python 不會阻止修改這些變量,需要依賴于程序員自覺遵守約定。 使用模塊 enumenum 模塊提供了一種使用枚舉定義常量的方法。
from enum import Enum class Constant(Enum): PI = 3.141592653589793 EULER_NUMBER = 2.718281828459045 print(Constant.PI.value) print(Constant.EULER_NUMBER.value)
在上面這個示例中,使用 enum 模塊定義一個名為 Constants 的枚舉類來創(chuàng)建兩個常量。常量被定義為枚舉類的成員,可以使用 .value 屬性訪問常量值。嘗試修改常量的值將引發(fā)異常。 使用模塊 pconstfrom pconst import const const.PI = 3.141592653589793 const.MAX_VALUE = 100 print(const.PI) print(const.MAX_VALUE)
如果嘗試更新常量的值,將引發(fā) ConstantError。 readonly 凍結(jié)變量在 Python 中使用 readonly 庫的裝飾器,將變量標(biāo)記為只讀,從而防止在初始賦值后進(jìn)行修改。 from readonly import readonly @readonly class Constants: PI = 3.141592653589793
print(Constants.PI)
在上面示例中,如果對 Constants.PI 進(jìn)行賦值,將引發(fā)錯誤 AttributeError: can't set attribute 。 @property 設(shè)置只讀創(chuàng)建只讀類屬性,可以使用@property裝飾器,防止屬性的更改。 class Constants: _PI = 3.141592653589793 @property def PI(self): return self._PI
Const = Constants() print(Const.PI)
配置文件中存儲常量可以使用 INI 格式的外部配置文件來存儲常量,使用標(biāo)準(zhǔn)庫 configparser 讀取文件中的常量。 # constants.ini 文件 [CONSTANTS] PI = 3.141592653589793 EULER_NUMBER = 2.718281828459045 MAX_VALUE = 100
from configparser import ConfigParser constants = ConfigParser() constants.read("constants.ini")
print(constants.get("CONSTANTS", "PI")) print(constants.get("CONSTANTS", "EULER_NUMBER")) print(constants.get("CONSTANTS", "MAX_VALUE"))
在 Python 中雖然沒有對常量內(nèi)置支持,但可以使用各種技術(shù)來定義它們,常量都有助于提高代碼的可讀性、更好的可維護(hù)性、清晰的意圖傳達(dá)、降低錯誤風(fēng)險。
|