在主回路的底部,我看到了这条线
result = result()
但我不知道它是做什么的,我甚至不能谷歌它。 这是什么?
下面的代码从导入任务.py以及项目.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
你必须看到全局循环:
它只调用
result
函数,直到返回一个非函数(可能是一个结果),重新分配回result
名称。result
只是一个名称,它可以引用任何东西,包括函数。你知道吗你可以看到,就像一个节点一个节点地遍历一棵树,直到你到达一片叶子。你知道吗
select_menu
返回actions
的元素,这些元素都是函数(main_menu
,exit
,create_project
…)。因此,result
是一个函数。result = result()
将执行该函数并用该函数的返回值替换result
中的值。你知道吗相关问题 更多 >
编程相关推荐