在程序開發(fā)過程中,我們通常會(huì)有很多的數(shù)據(jù)被重復(fù)的使用,重點(diǎn)使用,這個(gè)時(shí)候我們通常會(huì)將這個(gè)常用的數(shù)據(jù)定義成為一個(gè)全局變量或者常量,這樣我們?cè)跁鴮懘a的時(shí)候不用一遍一遍的去重新定義內(nèi)容,直接調(diào)用常量或者變量就可以了,不但可以減少代碼的重復(fù),也可以精簡(jiǎn)和美化代碼
在Python中,我們通常會(huì)在方法外面去定義全局變量,這樣我們就可以在其他方法中來靈活調(diào)用,定義的時(shí)候可以賦予變量一個(gè)初始值,這個(gè)值可以在定義的方法中直接調(diào)用,也可以修改變量的內(nèi)容,在最近的一個(gè)項(xiàng)目中,在開發(fā)統(tǒng)計(jì)功能的時(shí)候,由于基本上每個(gè)接口都會(huì)用到時(shí)間函數(shù)獲取當(dāng)前的時(shí)間來計(jì)算,每周的日期,或者月份的日期,但是獲取當(dāng)前時(shí)間的代碼datetime.datetime.now()感覺有點(diǎn)長(zhǎng),每次還需要計(jì)算或者后面在獲取時(shí)分秒的就更長(zhǎng),于是就把這個(gè)方法定義成了常量,想要在每次需要使用這個(gè)方法獲取當(dāng)前時(shí)間的時(shí)候可以直接調(diào)用縮短代碼長(zhǎng)度,于是直接在定義了一個(gè)全局變量t=datetime.datetime.now()定義之后也可以在方法內(nèi)直接使用,感覺特別方便
可以在實(shí)際使用了一段時(shí)間后,發(fā)現(xiàn)查詢出來的數(shù)據(jù)好像有問題,時(shí)間上總是對(duì)不太上,還沒發(fā)現(xiàn)是哪里的問題,于是去檢查接口寫的是否有問題,但是代碼一重新運(yùn)行之后就發(fā)現(xiàn),沒有問題了,數(shù)據(jù)對(duì)了。但是過了半天后,數(shù)據(jù)又不對(duì)了。反反復(fù)復(fù)幾次之后發(fā)現(xiàn)這里好像有大bug
經(jīng)過測(cè)試發(fā)現(xiàn),這個(gè)全局變量的值雖然可以直接調(diào)用,但是值一直沒變,于是就很尷尬,所以在Python中,全局變量的值不會(huì)每次都重新計(jì)算獲取當(dāng)前的時(shí)間,除非在某個(gè)方法或者代碼里面重新運(yùn)行一次,否則他的值會(huì)一直保持不變。所以如果你想要每次都獲取當(dāng)前的實(shí)際時(shí)間的話不能夠這樣直接定義變量來獲取,需要定義一個(gè)方法來返回當(dāng)前時(shí)間才可以