首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调用函数中的函数?

如何调用函数中的函数?
EN

Stack Overflow用户
提问于 2013-09-14 16:18:29
回答 4查看 1.1K关注 0票数 0

我不知道这是否可能,我对python还不熟悉,但是在我想要调用的函数中有一个函数,是否可以调用菜单()中的add()或sub()函数?我尝试过不同的方法来调用它(我认为每一种方式都有意义),但是产生了一个错误--名字'add‘没有定义

代码语言:javascript
运行
复制
def menu():
    def add():
        print 6+6
    def sub():
        print 6-3
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-14 16:33:35

定义函数的方式,addsubmenu函数中的本地名称。这意味着您只能在菜单运行时直接访问它们。

有几种方法可以解决这个问题。您可以让menu根据某些条件调用它们:

代码语言:javascript
运行
复制
def menu(choice):
    def add():
        print 6+6
    def sub():
        print 6-3

    if choice == 'add':
        add() # call add here
    elif choice == 'sub':
        sub() # call sub here

或者,您可以让menu返回一个或多个函数,然后在调用代码中指定一个新名称,然后调用:

代码语言:javascript
运行
复制
def menu(choice):
    def add():
        print 6+6
    def sub():
        print 6-3

    if choice == 'add':
        return add # returning the function, not calling it
    elif choice == 'sub':
        return sub # same here

func = menu('add')
func() # calls the add function defined in menu

但是,这些情况都没有给出在菜单中定义addsub函数的充分理由。在代码的顶层定义它们通常更好,即使要从其他函数调用或返回它们(至少,这将使测试更容易)。

票数 2
EN

Stack Overflow用户

发布于 2013-09-14 16:20:42

menu()函数中,在它们的定义之后直接调用它们:

代码语言:javascript
运行
复制
def menu():
    def add():
        print 6+6
    def sub():
        print 6-3
    add()
    sub()

输出:

代码语言:javascript
运行
复制
>>> menu()
12
3

要全局访问这些函数,您可以从menu()返回这些函数,并将它们分配给全局变量。

代码语言:javascript
运行
复制
>>> def menu():
        def add():
                print 6+6
        def sub():
                print 6-3
        return add, sub
...     
>>> add, sub = menu()
>>> add()
12
>>> sub()
3
票数 4
EN

Stack Overflow用户

发布于 2013-09-14 16:20:48

你怎么说的,对我来说很好:

代码语言:javascript
运行
复制
def menu():
    def add():
        print 6+6
    def sub():
        print 6-3
    add()

>>> menu()
12
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18803750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档