函数中的内部函数能不能在外部单独调用?

函数中的内部函数能不能在外部单独调用

def jisuanqi(x, y):
    def plus(a, b):
        c = a + b
        print(f"{a}+{b}={c}")

    plus(x, y)

    def devide(a, b):
        c = a // b + 0.8 * a + b * b * b - a * b
        print(f"{a}{b}通过复杂的计算,得出了{c}")

    devide(x, y)


mm = jisuanqi(11, 4)

如果我想单独调用内部函数devide(),有没有可能实现?

  • 以下回答由chatgpt基于相关博客总结生成:

    在函数外部调用函数内的内部函数是不可能的。内部函数的作用范围只限于函数内部,它无法从函数外部直接访问。这是因为内部函数可以访问外部函数的变量和资源,但外部函数无法直接访问内部函数的变量和资源。

    如果需要在函数外部调用内部函数的功能,可以通过另一种方式实现。可以将内部函数提取为一个独立的函数,并使其成为外部函数的一个返回值。然后,外部函数就可以在函数外部调用该函数。

    以下是一个示例代码,演示如何实现这样的功能:

    def outer_function():
        def inner_function():
            print("This is the inner function")
    
        # 调用内部函数
        inner_function()
    
        # 将内部函数作为外部函数的返回值
        return inner_function
    
    # 调用外部函数,获取内部函数作为返回值
    returned_function = outer_function()
    
    # 在函数外部调用内部函数
    returned_function()
    

    输出结果为:

    This is the inner function
    This is the inner function
    

    在上述示例中,通过在外部函数中定义内部函数,并在外部函数中调用内部函数,以确保内部函数被执行。然后,将内部函数作为外部函数的返回值返回。在函数外部,可以通过调用返回的函数,来实现间接地调用内部函数的功能。

    请注意,这种方式仅适用于函数内部需要被复用的情况。如果内部函数只在函数内部使用,并且没有复用的需求,那么没有必要将其提取为独立的函数。

不太可能实现,这里涉及一个概念,叫做闭包(closure)
函数内定义的函数,是可以使用外侧函数内定义的变量的,而这些变量在全局是不存在的
假设你可以单独调用函数内的函数,那么我问你,这些变量怎么处理?

为什么不把里面的函数封装成一个类