0
我有这个代码做递归,但我希望能够观察递归,但是说明每个递归的深度以及它何时返回。只是简单的如下所示。不知道在哪里需要放置空格或制表符以使这发生,我使用了一个字符串map_str,然后在最后打印出来。请参阅代码和输出示例。Python - 打印出一个视觉递归轨迹
def get_process_parents(batchDate, late_process):
global late_parents
global map_str
process_depends = []
#logging.info('late_process: %s ' % late_process)
process_depends = getprocessDependencies(batchDate, late_process)
late_parents[late_process.get('name')] = process_depends
map_str += (' %s ---> %s \n------>\n' % (late_process.get('name'), process_depends))
#logging.info('Late_process Name: %s ---> Depends: %s ' % (late_process.get('name'),process_depends))
if not process_depends:
#logging.info('No more depends: %s' % late_process.get('name'))
late_parents_process.add(late_process.get('name'))
map_str += (' %s ---> %s\n ---->\n' % (late_process.get('name'), process_depends))
else:
for process_depend in process_depends:
process = getprocessByName(batchDate, process_depend)
#logging.info('process_depend %s --> state: %s ' % (process_depend, process.get('state')))
if process.get('state') == 'Done':
#logging.info('process depend DONE: %s' % process_depend)
map_str += (' %s Status: %s\n ---->\n' % (process_depend, process.get('state')))
else:
late_parents_process.add(process.get('name'))
get_process_parents(batchDate, getprocessByName(batchDate,process_depend))
输出:
我希望它看起来像
Process_name ----> ['process dependencies 1', 'process dependencies 2']
------>process dependencies 1 ----> [process dependencies 3, dependencies 4]
------>dependencies 3 -----> []
------>dependencies 4 -----> []
------>process dependencies 2 ----> [process dependencies 5]
------>process dependencies 5 -----> [process dependencies 6]
----->process dependencies 6 -----> []
在这种情况下需要注意使用全局的东西是什么? – user3590149 2014-10-08 16:32:40
一般而言,全局变量可能会超出函数的范围,从而使代码难以推理。在这种情况下,你必须确保map_str在你的函数调用之间得到适当的重置。如果你像上面一样使用'depth',你可以像'if depth == 0:map_str ='“'一样放入一行,这会使它更安全,更不容易出错。 – Gretchen 2014-10-09 16:23:21