知道末尾输出的时候为什么要加两个括号嘛?#自定义函数

  • def a():
    def b():
               return "b"
    
    print("a","end=")
    return b
    print(a()())

运行结果:ab

a ()()第一对括号执行函数a,由于a返回值是函数,所以要继续执行就需要加第二对括号。不加的话就是直接打印a的返回值b这个函数,类似下面这种输出

a<function a.<locals>.b at 0x000001D927140DC0>

因为a()是调用函数a,而a函数的返回值又是一个函数b,所以要调用函数b就要用b(),连起来就是a()()
用个中间值你再看看:
假设xx=a(),这个xx又是一个函数,是函数b,所以要调用函数b,你就要xx() ,连起来就是a()()