我不知道这是否可能,我对python还不熟悉,但是在我想要调用的函数中有一个函数,是否可以调用菜单()中的add()或sub()函数?我尝试过不同的方法来调用它(我认为每一种方式都有意义),但是产生了一个错误--名字'add‘没有定义
def menu():
def add():
print 6+6
def sub():
print 6-3发布于 2013-09-14 16:33:35
定义函数的方式,add和sub是menu函数中的本地名称。这意味着您只能在菜单运行时直接访问它们。
有几种方法可以解决这个问题。您可以让menu根据某些条件调用它们:
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返回一个或多个函数,然后在调用代码中指定一个新名称,然后调用:
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但是,这些情况都没有给出在菜单中定义add和sub函数的充分理由。在代码的顶层定义它们通常更好,即使要从其他函数调用或返回它们(至少,这将使测试更容易)。
发布于 2013-09-14 16:20:42
在menu()函数中,在它们的定义之后直接调用它们:
def menu():
def add():
print 6+6
def sub():
print 6-3
add()
sub()输出:
>>> menu()
12
3要全局访问这些函数,您可以从menu()返回这些函数,并将它们分配给全局变量。
>>> def menu():
def add():
print 6+6
def sub():
print 6-3
return add, sub
...
>>> add, sub = menu()
>>> add()
12
>>> sub()
3发布于 2013-09-14 16:20:48
你怎么说的,对我来说很好:
def menu():
def add():
print 6+6
def sub():
print 6-3
add()
>>> menu()
12https://stackoverflow.com/questions/18803750
复制相似问题