2010-12-23 22 views
0

我從一開始就在Python中得到的一個做法是減少我創建的變量的數量與我在嘗試創建時創建的數量在這裏SAS或Fortran語言試圖瞭解哪些更好用python創建變量或使用表達式

例如同樣的事情,是一些代碼,我今晚寫道:

def idMissingFilings(dEFilings,indexFilings): 
    inBoth=set(indexFilings.keys()).intersection(dEFilings.keys()) 
    missingFromDE=[] 
    for each in inBoth: 
     if len(dEFilings[each])<len(indexFilings[each]): 

      dEtemp=[] 
      for filing in dEFilings[each]: 
       #dateText=filing.split("\\")[-1].split('-')[0] 
       #year=dateText[0:5] 
       #month=dateText[5:7] 
       #day=dateText[7:] 
       #dETemp.append(year+"-"+month+"-"+day+"-"+filing[-2:])  
      dEtemp.append(filing.split('\\')[-1].split('-')[0][1:5]+"-"+filing.split('\\')[-1].split('-')[0][5:7]+"-"+filing.split('\\')[-1].split('-')[0][7:]+"-"+filing[-2:]) 
      indexTemp=[] 
      for infiling in indexFilings[each]: 
       indexTemp.append(infiling.split('|')[3]+"-"+infiling[-6:-4]) 
      tempMissing=set(indexTemp).difference(dEtemp) 
      for infiling in indexFilings[each]: 
       if infiling.split('|')[3]+"-"+infiling[-6:-4] in tempMissing: 
        missingFromDE.append(infiling) 
    return missingFromDE 

現在我拆我處理在線路dEtemp.append(等等等等等等4倍的一個字符串)

filing.split('\\') 

歷史上在Fortran或SAS中,如果我嘗試使用相同的操作,我會「切分」我的字符串一次,併爲該表達式中要使用的字符串的每個部分分配一個變量。

我不斷強迫自己使用表達式,而不是首先解析爲一個值並使用該值。我這樣做的唯一原因是,我通過模仿其他人的代碼來學習,但是我一直想回答這個問題 - 我在哪裏可以找到一個關於爲什麼一個比另一個更好的有說服力的討論

該代碼比較驅動器上的一組文檔和這些文檔的源列表,並檢查來自源的所有這些文檔是否在驅動器上代表

好的評論部分更容易閱讀,我如何決定回答nosklos回答

回答

5

是的,把所有內容都放在表達式中並不好。請使用變量。

使用變量不僅更好,因爲您只會執行一次操作並保存該值以供多次使用。主要原因是代碼通過這種方式變得更加可讀。如果您將變量命名爲正確的話,它就會成爲免費的隱式文檔!

+0

天哪,所以你建議我正在學習和強迫自己的壞習慣。 – PyNEwbie 2010-12-23 05:35:41

相關問題