我从一开始就在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回答
答案 0 :(得分:5)
是的,把所有内容都放在表达式中并不是更好。请使用变量。
使用变量不仅更好,因为您只需执行一次操作并保存多次使用的值。主要原因是代码变得更具可读性。如果你将变量命名为right,它就会成为免费的隐式文档!
答案 1 :(得分:0)
使用更多变量。 Python以其可读性着称;取消该功能称为“ Pythonic”(请参见https://docs.python-guide.org/writing/style/)。更具可读性的代码将使其他人更容易理解,并且以后更容易理解自己。