在主循环底部,我看到了这条线
result = result()
但是我不知道它是做什么的,我什至无法搜索它。 这是什么?
下面的代码从task.py和project.py导入。但是两个文件都没有与result()相关的任何内容,因此我不在这里包括它们。
#!/usr/bin/env python3
from task import Task
from project import Project
main_menu = {
'title': 'MAIN MENU',
'items': ['1. Create a project', '2. Load a project', '3. Quit'],
'actions': {
'3': exit,
}
}
project_menu = {
'title': 'PROJECT MENU',
'items': ['1. Add a task', '2. Add task dependency', '3. Set task progress',
'4. Show project', '5. Back to Main Menu'],
'actions': {
'5': main_menu,
}
}
def select_menu(menu):
while True:
print()
print(menu['title']) #MAIN MENU
print('\n'.join(menu['items'])) #1. create project, 2. load project ..
selection = input('Select > ')
next_action = menu['actions'].get(selection)
#print(selection, menu['actions'])
if next_action:
return next_action
else:
print('\nPlease select from the menu')
def create_project():
global cur_project
global project_menu
project_name = input('Enter the project name: ')
cur_project = Project(project_name)
return project_menu
main_menu['actions']['1'] = create_project
cur_menu = main_menu
cur_project = None
while True:
result = select_menu(cur_menu)
while callable(result):
result = result()
cur_menu = result
答案 0 :(得分:2)
select_menu
返回元素actions
,它们是所有函数(main_menu
,exit
,create_project
...。)。因此,result
是一个函数。 result = result()
将执行该函数,并将result
中的值替换为该函数的返回值。
答案 1 :(得分:1)
您必须看到全局循环:
while callable(result):
result = result()
它仅调用result
function ,直到它返回一个非函数(可能是结果),并重新分配result
名称。 result
只是一个名称,它可以引用任何内容,包括函数。
您可以看到,就像遍历一个树节点直到到达一片叶子一样。