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
>>> 

更多推荐

Python如何在main中调用函数内的函数