我有以下代码:
jobList = self.jobs.findall("JOB")
for jitem in jobList:
self.deployJobs = []
if jitem.attrib.get("DISABLE") == 'Y':
self.disablejob = '1'
self.effectivedate = currentdate
self.deployJobs.append(jitem.text)
configXPRandDeploy(self)
self.deployJobs = []
elif jitem.attrib.get("EFFECTIVE") == nextdate:
self.disablejob = '0'
self.effectivedate = nextdate
self.deployJobs.append(jitem.text)
configXPRandDeploy(self)
self.deployJobs = []
else:
self.disablejob = '0'
self.effectivedate = currentdate
self.deployJobs.append(jitem.text)
configXPRandDeploy(self)
我想要的是每个IF以一个清晰的self.deployJobs开始,但我似乎无法弄清楚逻辑。
答案 0 :(得分:1)
问题是它在
if
循环的每个部分之后清除
if
语句不是循环。其中的缩进代码块(技术上,"套件"在其中)不是按顺序执行的。每次迭代循环都会执行零个或一个套件,永远不会超过一个。
我希望列表包含
if
中的所有内容,然后当它移至elif
再次为空时
确定if
或elif
条件为真后, <{em> if
或elif
后面的套件会被执行,然后整个if
- elif
- else
结构已完成。执行if
套件永远不会&#34;转移到elif
&#34;。
Python Language Reference清楚地描述了if
statements的行为。
我想要的是每个
开头if
以明确self.deployJobs
假设您的意思是每个if
语句套件都以明确的self.deployJobs
开头,那么您应该立即放置self.deployJobs = []
行您已经完成的if
声明......
所以我担心在这一点上我必须加入众多其他海报,他们无法弄清楚你希望这些代码做什么。不过,我可以建议,使用self.deployJobs = []
的结束套件可能根本无法帮助您。