我有条件,需要在其中定义var并在此条件之外使用它。这是我的代码:
if 1 < (process_time % 60):
final_process_time = 'process time is: ' + str(process_time) + ' sec!'
elif 1 <= (process_time % 60) < 60:
process_time = process_time / 60
final_process_time = 'process time is: ' + str(process_time) + ' min!'
elif 60 <= (process_time % 60):
process_time = process_time / 3600
final_process_time = 'process time is: ' + str(process_time) + ' hour(s)!'
print(final_process_time)
我收到此错误:
local variable 'final_process_time' referenced before assignment
提示: 我测试了这些解决方案,但没有一个响应:
set final_process_time to `global` # Error: name 'final_process_time' is not defined
Define final_process_time ='' Before conditions # Result: nothing set to this var
已附加: 有人建议我在此部分中投入更多代码来修复该错误。我的整个代码:(当然,还没有添加一些绝对不相关的项目)
def excel_report(request):
output = io.BytesIO()
workbook = xlsxwriter.Workbook(output)
....
TITLES_LIST = [
['user', 'title', 'explains', 'organization', 'post', 'time_start', 'time_end'],
....
]
FILE_NAME = 'report-' + datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + '.xlsx'
# writer = pd.ExcelWriter(FILE_NAME, engine='xlswriter')
if request.method == 'POST':
if 'job_record' in request.POST:
time_start_process = time.time()
resumes = JobRecord.objects.all().values(*(TITLES_LIST[0][0]))
titles_list = TITLES_LIST[0][0]
worksheet = workbook.add_worksheet('Job Resume')
worksheet.write_row('A1', titles_list, title_styles)
for i in range(1, len(resumes) + 1):
k = i - 1
for j in range(len(titles_list) - 2):
worksheet.write(i, j, resumes[k][titles_list[j]], body_styles)
worksheet.write(i, 5, resumes[k]['time_start'], time_style)
worksheet.write(i, 6, resumes[k]['time_end'], time_style)
process_time = time.time() - time_start_process
if 1 < (process_time % 60):
final_process_time = 'process time is: ' + str(process_time) + ' sec!'
elif 1 <= (process_time % 60) < 60:
process_time = process_time / 60
final_process_time = 'process time is: ' + str(process_time) + ' min!'
elif 60 <= (process_time % 60):
process_time = process_time / 3600
final_process_time = 'process time is: ' + str(process_time) + ' hour(s)!'
worksheet = workbook.add_worksheet('process sheet')
worksheet.write('A1', 'Process Time', title_styles)
worksheet.write('A2', final_process_time, title_styles)
workbook.close()
output.seek(0)
response = HttpResponse(output,
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=%s' % FILE_NAME
return response
答案 0 :(得分:4)
在条件之前将final_process_time
设置为有意义的值,或者在您再次将else
子句设置为有意义的值的位置。不要让它global
与问题无关。