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

Python實(shí)現(xiàn)Const詳解

 更新時(shí)間:2015年01月27日 16:56:13   投稿:hebedich  
這篇文章主要介紹了Python實(shí)現(xiàn)Const的方法的相關(guān)資料,需要的朋友可以參考下

python語(yǔ)言本身沒(méi)有提供const,但實(shí)際開(kāi)發(fā)中經(jīng)常會(huì)遇到需要使用const的情形,由于語(yǔ)言本身沒(méi)有這種支出,因此需要使用一些技巧來(lái)實(shí)現(xiàn)這一功能

定義const類如下

復(fù)制代碼 代碼如下:

import sys
class Const(object):
    class ConstError(TypeException): pass
    def __setattr__(self, key, value):
        if self.__dict__.has_key(key):
            raise self.ConstError, "Changing const.%s" % key
        else:
            self.__dict__[key] = value
    def __getattr__(self, key):
        if self.__dict__.has_key(key):
            return self.key
        else:
            return None
sys.modules[__name__] = Const()

使用sys.modules[name]可以獲取一個(gè)模塊對(duì)象,并可以通過(guò)該對(duì)象獲取模塊的屬性,這兒使用了sys.modules向系統(tǒng)字典中注入了一個(gè)Const對(duì)象從而實(shí)現(xiàn)了在執(zhí)行import const時(shí)實(shí)際獲取了一個(gè)Const實(shí)例的功能,sys.module在文檔中的描述如下

sys.modules
This is a dictionary that maps module names to modules which have already been loaded. This can be manipulated to force reloading of modules and other tricks. Note that removing a module from this dictionary is not the same as calling reload() on the corresponding module object.
sys.modules[name] = Const()這條語(yǔ)句將系統(tǒng)已加載的模塊列表中的const替換為了Const(),即一個(gè)Const實(shí)例

這樣,整個(gè)工程需要使用的常量都應(yīng)該定義在一個(gè)文件中,如下

復(fù)制代碼 代碼如下:

from project.utils import const
const.MAIL_PROTO_IMAP = 'imap'
const.MAIL_PROTO_GMAIL = 'gmail'
const.MAIL_PROTO_HOTMAIL = 'hotmail'
const.MAIL_PROTO_EAS = 'eas'
const.MAIL_PROTO_EWS = 'ews'

這兒首先需要說(shuō)明python中import module和from module import的區(qū)別

import module只是將module的name加入到目標(biāo)文件的局部字典中,不需要對(duì)module進(jìn)行解釋
from module import xxx需要將module解釋后加載至內(nèi)存中,再將相應(yīng)部分加入目標(biāo)文件的局部字典中
python模塊中的代碼僅在首次被import時(shí)被執(zhí)行一次
from project.utils import const時(shí),發(fā)生了sys.modules[name] = Const(),此時(shí)const模塊已經(jīng)加載進(jìn)入內(nèi)存,系統(tǒng)字典中也已經(jīng)有了Const對(duì)象,隨后既可以使用Const實(shí)例了

在其他文件中需要使用常量值時(shí),以如下方式調(diào)用

復(fù)制代碼 代碼如下:

from project.apps.project_consts import const
print const.MAIL_PROTO_IMAP

相關(guān)文章

  • Python3.4學(xué)習(xí)筆記之列表、數(shù)組操作示例

    Python3.4學(xué)習(xí)筆記之列表、數(shù)組操作示例

    這篇文章主要介紹了Python3.4列表、數(shù)組操作,結(jié)合實(shí)例形式分析了Python3.4列表的創(chuàng)建、元素追加、刪除、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python實(shí)現(xiàn)把數(shù)字轉(zhuǎn)換成中文

    Python實(shí)現(xiàn)把數(shù)字轉(zhuǎn)換成中文

    這篇文章主要介紹了Python實(shí)現(xiàn)把數(shù)字轉(zhuǎn)換成中文,一般用于數(shù)字金額轉(zhuǎn)中文大寫金額,即將阿拉伯?dāng)?shù)字轉(zhuǎn)換為大寫的中文,需要的朋友可以參考下
    2015-06-06
  • Python 性能優(yōu)化技巧總結(jié)

    Python 性能優(yōu)化技巧總結(jié)

    代碼優(yōu)化能夠讓程序運(yùn)行更快,它是在不改變程序運(yùn)行結(jié)果的情況下使得程序的運(yùn)行效率更高,根據(jù) 80/20 原則,實(shí)現(xiàn)程序的重構(gòu)、優(yōu)化、擴(kuò)展以及文檔相關(guān)的事情通常需要消耗 80% 的工作量。優(yōu)化通常包含兩方面的內(nèi)容:減小代碼的體積,提高代碼的運(yùn)行效率。
    2016-11-11
  • 詳解Python中Pyyaml模塊的使用

    詳解Python中Pyyaml模塊的使用

    這篇文章主要介紹了Python中Pyyaml模塊的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Win10下python 2.7與python 3.7雙環(huán)境安裝教程圖解

    Win10下python 2.7與python 3.7雙環(huán)境安裝教程圖解

    這篇文章主要介紹了Win10下python 2.7與python 3.7雙環(huán)境安裝教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解基于python的圖像Gabor變換及特征提取

    詳解基于python的圖像Gabor變換及特征提取

    這篇文章主要介紹了基于python的圖像Gabor變換及特征提取,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-10-10
  • Python之numpy.random.seed()和numpy.random.RandomState()區(qū)別及說(shuō)明

    Python之numpy.random.seed()和numpy.random.RandomState()區(qū)別及說(shuō)明

    這篇文章主要介紹了Python之numpy.random.seed()和numpy.random.RandomState()區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2017-10-10
  • Pandas多列值合并成一列的實(shí)現(xiàn)

    Pandas多列值合并成一列的實(shí)現(xiàn)

    本文主要介紹了Pandas多列值合并成一列的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python文件與文件夾操作大全(非常全面)

    Python文件與文件夾操作大全(非常全面)

    Python具有強(qiáng)大的文件處理功能,如文件的創(chuàng)建、打開(kāi)、文件內(nèi)容的寫入、讀出文件中的內(nèi)容等等,這篇文章主要介紹了Python文件與文件夾操作,需要的朋友可以參考下
    2023-09-09
  • 用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī)

    大家好,本篇文章主要講的是用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機(jī),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評(píng)論

会昌县| 海门市| 昌黎县| 张家界市| 乌兰浩特市| 兴隆县| 克什克腾旗| 明溪县| 岑溪市| 文昌市| 微山县| 莱西市| 大连市| 巴彦淖尔市| 宿迁市| 泰来县| 赞皇县| 西充县| 杂多县| 武鸣县| 长泰县| 仪征市| 海晏县| 紫金县| 乌拉特后旗| 柏乡县| 舞钢市| 东港市| 秭归县| 关岭| 西华县| 杭州市| 兰州市| 信宜市| 稷山县| 凤翔县| 安图县| 麦盖提县| 泰兴市| 南江县| 千阳县|