Python 代码一旦放入函数中就不起作用
为什么下面的代码能按预期工作,但一旦放入函数中。它返回意外的结果Python 代码一旦放入函数中就不起作用,python,function,io,Python,Function,Io,为什么下面的代码能按预期工作,但一旦放入函数中。它返回意外的结果 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 '@ATTRI
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])
打印的结果是预期的
if file[:3] == 'DBA':
with open(file, 'r') as prm:
for line in prm:
dimension_parse(line)
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])
不返回任何内容 在第二个版本(在函数中)中,您正在将
标志
(又称复制
)值重置为False
,而不是在“无例程”版本中,您仅在开始时设置它
因此,如果第行中的“@ATTRIB_DETAIL”或第行中的“
elif”@BITLIST_FILES”都不满足,则行为是不同的。第二个版本中不会再现内存效应。根据共享代码的不同,该错误可能是由使用后定义函数引起的。
函数应在使用前定义
修改代码
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)
同时共享错误,不返回任何内容。没有错误。那么什么是意外的呢?函数将不会返回,除非明确要求它返回。谢谢,我尝试了此操作,但发现列表索引超出范围错误/