函数中的内部函数能不能在外部单独调用
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(),有没有可能实现?
在函数外部调用函数内的内部函数是不可能的。内部函数的作用范围只限于函数内部,它无法从函数外部直接访问。这是因为内部函数可以访问外部函数的变量和资源,但外部函数无法直接访问内部函数的变量和资源。
如果需要在函数外部调用内部函数的功能,可以通过另一种方式实现。可以将内部函数提取为一个独立的函数,并使其成为外部函数的一个返回值。然后,外部函数就可以在函数外部调用该函数。
以下是一个示例代码,演示如何实现这样的功能:
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)
函数内定义的函数,是可以使用外侧函数内定义的变量的,而这些变量在全局是不存在的
假设你可以单独调用函数内的函数,那么我问你,这些变量怎么处理?
为什么不把里面的函数封装成一个类