为什么下面的代码按预期工作,但一旦放入函数中。它会返回意外的结果吗?
SELECT * FROM tblTransactions
WHERE TransactionID Not In (Select DebitID From tblMatches)
And TransactionID Not In (Select CreditID From tblMatches)
预计会打印出结果。
a_prm = []
folder = askdirectory()
copy = False
os.chdir(folder)
for file in glob.glob("*.prm"):
with open(file, 'r') as prm:
if file[:3] == 'DBA':
for line in prm:
if '@ATTRIB_DETAIL' in line:
copy = True
elif '@BITLIST_FILES' in line:
copy = False
elif copy:
print(line.split()[1])
什么都不返回。
答案 0 :(得分:0)
您在第二个版本(函数内)中将flag
(又名copy
)值重置为False
,而不是在“无常规”版本中只在开始时设置它。
如果满足if '@ATTRIB_DETAIL' in line
或elif '@BITLIST_FILES' in line:
,行为就会有所不同。在第二个版本中没有重现的记忆效应。
答案 1 :(得分:0)
根据您的共享代码,错误可能是由于在使用后定义了该功能引起的 该函数应在使用前定义。
修改后的代码。
def dimensions_parse(line):
flag = False
if '@ATTRIB_DETAIL' in line:
flag = True
elif '@BITLIST_FILES' in line:
flag = False
elif flag:
print(line.split()[1])
if file[:3] == 'DBA':
with open(file, 'r') as prm:
for line in prm:
dimension_parse(line)