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

时间:2018-07-17 08:11:23

标签: python

在主循环底部,我看到了这条线

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

2 个答案:

答案 0 :(得分:2)

select_menu返回元素actions,它们是所有函数(main_menuexitcreate_project...。)。因此,result是一个函数。 result = result()将执行该函数,并将result中的值替换为该函数的返回值。

答案 1 :(得分:1)

您必须看到全局循环:

while callable(result):
    result = result()

它仅调用result function ,直到它返回一个非函数(可能是结果),并重新分配result名称。 result只是一个名称,它可以引用任何内容,包括函数。

您可以看到,就像遍历一个树节点直到到达一片叶子一样。