试图了解python创建变量或使用表达式哪个更好

时间:2010-12-23 05:28:58

标签: python coding-style comparison fortran

我从一开始就在Python中使用的一种做法是减少我创建的变量数量,而不是尝试在SAS或Fortran中执行相同操作时创建的数量

例如,这是我今晚写的一些代码:

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(blah blah blah)行中分割了我正在处理4次的字符串之一

filing.split('\\')

历史上在Fortran或SAS中,如果我尝试相同的话,我会将我的字符串“切片”一次,并为我将在此表达式中使用的字符串的每个部分分配一个变量。

我不断强迫自己使用表达式而不是先解析一个值并使用该值。我这样做的唯一原因是我通过模仿其他人的代码来学习,但我一直想到这个问题 - 在哪里可以找到一个有说服力的讨论,为什么一个比另一个更好

代码比较驱动器上的一组文档和这些文档的源列表,并检查源中的所有文档是否都显示在驱动器上

好的评论部分更容易阅读,我决定如何回应nosklos回答

2 个答案:

答案 0 :(得分:5)

是的,把所有内容都放在表达式中并不是更好。请使用变量。

使用变量不仅更好,因为您只需执行一次操作并保存多次使用的值。主要原因是代码变得更具可读性。如果你将变量命名为right,它就会成为免费的隐式文档!

答案 1 :(得分:0)

使用更多变量。 Python以其可读性着称;取消该功能称为“ Pythonic”(请参见https://docs.python-guide.org/writing/style/)。更具可读性的代码将使其他人更容易理解,并且以后更容易理解自己。