関数を定義した方法で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
1 つ以上の関数を返すこともできます。呼び出し元のコードで新しい名前を付けて、後で呼び出すことができます。
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
他の関数から呼び出したり返したりする場合でも、コードのトップレベルで定義する方がよい場合がよくあります (少なくとも、テストが容易になります)。