Python如何在main中调用函数内的函数
一般在Python中在函数中定义的函数是不能直接调用的,但是如果要用的话怎么办呢?
一般情况下:
def a():#第一层函数
def b():#第二层函数
print('打开文件B')
b()#第二层中的函数直接调用
结果显示:
Traceback (most recent call last):
File "C:/Users/rog/Desktop/wenzhang.py", line 4, in <module>
b()
NameError: name 'b' is not defined
但是又要用,怎么办呢?这时候只要在函数a中返回b函数的函数名,就可以使用b函数了。
def a():#第一层函数
def b():#第二层函数
print('打开文件B')
return(b)
s=a()#首先要调用一次a函数,将a函数的返回值给s,这里也就是b函数
s()
结果:
打开文件B
>>>
如果需要调用同一个函数内的多个函数:
这里先设置了一个全局变量Position_number,然后在a()中说明这个全局变量,再通过全局变量的改变,来调用a()中不同的函数。
Position_number=0
def a():#第一层函数
global Position_number
def b():#第二层函数
print('打开文件B')
def c():
print('打开文件C')
def d():
print('打开文件D')
if(Position_number==0):
return(b)
if(Position_number==1):
return(c)
if(Position_number==2):
return(d)
s=a() #首先要调用一次a函数,将a函数的返回值给s,这里也就是b函数
s() #运行b函数
Position_number=1 #改变Position_number,使a()的返回值改变成c函数
s=a() #将c函数赋给s
s() #运行c函数
Position_number=2 #改变Position_number,使a()的返回值改变成c函数
s=a() #将d函数赋给s
s() #运行d函数
结果:
打开文件B
打开文件C
打开文件D
>>>