Python:变量名后面的括号()是什么意思?

2024-04-26 18:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在主回路的底部,我看到了这条线

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

Tags: fromprojectactionstasktitlemaincreateitems
2条回答

你必须看到全局循环:

while callable(result):
    result = result()

它只调用result函数,直到返回一个非函数(可能是一个结果),重新分配回result名称。result只是一个名称,它可以引用任何东西,包括函数。你知道吗

你可以看到,就像一个节点一个节点地遍历一棵树,直到你到达一片叶子。你知道吗

select_menu返回actions的元素,这些元素都是函数(main_menuexitcreate_project…)。因此,result是一个函数。result = result()将执行该函数并用该函数的返回值替换result中的值。你知道吗

相关问题 更多 >