python_跨文件之間真正的全局變量傳參

  • 需求:

  • A.py文件中的得到參數(shù)value,需要在B.py文件中使用value的值

  • 解決思路:

  • 1.全局變量只能在當(dāng)前文件中生效,所以即使將value聲明為全局變量也不能在B.py中使用

  • 2.這個需求給人的一種錯覺就是钱反,跟引用函數(shù)差不多盛垦,我在B中引用A是不是可行呢?答案是否定的,引用的過程中并不能將該參數(shù)值進(jìn)行存儲

  • 3.聯(lián)想到一種參數(shù)傳遞方法环肘,在主函數(shù)中(主文件)給參數(shù)賦值,在子文件中調(diào)用:

     import Main.py
     Main.value
    

集灌,這種方法可行悔雹,但是條件比較苛刻,對參數(shù)源要求比較高欣喧,并不是在任意路徑都能使用的

  • 解決方法:

    • 綜合以上4中方式腌零,可以找出可行方法:設(shè)置中間文件保持 value

  • 具體實現(xiàn):

  • 通過使用java的map聯(lián)想到python中可以通過字典來實現(xiàn)一個大集合的全局變量的方法

# 拼裝成字典構(gòu)造全局變量  借鑒map  包含變量的增刪改查
map = {}
def set_map(key, value):
    map[key] = value
def del_map(key):
    try:
        del map[key]
    except KeyError:
        print "key:'"+str(key)+"'  不存在"
def get_map(key):
    try:
        if key in "all":
            return map
        return map[key]
    except KeyError as e:
        print "key:'"+str(key)+"'  不存在"
  • 方法進(jìn)階

class GlobalMap:
    # 拼裝成字典構(gòu)造全局變量  借鑒map  包含變量的增刪改查
    map = {}

    def set_map(self, key, value):
        if(isinstance(value,dict)):
            value = json.dumps(value)
        self.map[key] = value


    def set(self, **keys):
        try:
            for key_, value_ in keys.items():
                self.map[key_] = str(value_)
                log.debug(key_+":"+str(value_))
        except BaseException as msg:
            log.error(msg)
            raise msg

    def del_map(self, key):
        try:
            del self.map[key]
            return self.map
        except KeyError:
            log.error("key:'" + str(key) + "'  不存在")


    def get(self,*args):
        try:
            dic = {}
            for key in args:
                if len(args)==1:
                    dic = self.map[key]
                    log.debug(key+":"+str(dic))
                elif len(args)==1 and args[0]=='all':
                    dic = self.map
                else:
                    dic[key]=self.map[key]
            return dic
        except KeyError:
            log.warning("key:'" + str(key) + "'  不存在")
            return 'Null_'

  • 總結(jié):

  • 方法很簡單,一看就能懂唆阿,但是為啥沒想到呢益涧,一是經(jīng)驗不足,二是要經(jīng)逞北睿總結(jié)闲询,學(xué)會真正的舉一反三

@晴 --2016-09-22 18:49:47

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末久免,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扭弧,更是在濱河造成了極大的恐慌阎姥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸽捻,死亡現(xiàn)場離奇詭異呼巴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)御蒲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門衣赶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厚满,你說我怎么就攤上這事屑埋。” “怎么了痰滋?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵摘能,是天一觀的道長。 經(jīng)常有香客問我敲街,道長团搞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任多艇,我火速辦了婚禮逻恐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘峻黍。我一直安慰自己复隆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布姆涩。 她就那樣靜靜地躺著挽拂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骨饿。 梳的紋絲不亂的頭發(fā)上烂瘫,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天随闽,我揣著相機(jī)與錄音,去河邊找鬼。 笑死菲宴,一個胖子當(dāng)著我的面吹牛栗精,可吹牛的內(nèi)容都是我干的期升。 我是一名探鬼主播拜姿,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脐往?” 一聲冷哼從身側(cè)響起俱济,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钙勃,沒想到半個月后蛛碌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辖源,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年蔚携,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片克饶。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡酝蜒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矾湃,到底是詐尸還是另有隱情亡脑,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布邀跃,位于F島的核電站霉咨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拍屑。R本人自食惡果不足惜途戒,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望僵驰。 院中可真熱鬧喷斋,春花似錦、人聲如沸蒜茴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粉私。三九已至顽腾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毡鉴,已是汗流浹背崔泵。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工秒赤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留猪瞬,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓入篮,卻偏偏與公主長得像陈瘦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子潮售,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理痊项,服務(wù)發(fā)現(xiàn)锅风,斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法鞍泉,類相關(guān)的語法皱埠,內(nèi)部類的語法,繼承相關(guān)的語法咖驮,異常的語法边器,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,629評論 0 7
  • 22年12月更新:個人網(wǎng)站關(guān)停,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,165評論 22 257
  • 我相信 小種子一定長成 歲月之花 我相信 周圍的事物會 更加美好 我相信 我會慢慢地 向著優(yōu)秀前進(jìn) 我相信 善良沒...
    韋心草閱讀 254評論 0 0