本帖最后由 傻眼貓咪 于 2021-9-15 21:22 编辑 
你的代碼其實可以寫成:(我將 funIn 拿出來,運行結果一樣,這樣你比較容易明白)
- def funOut():
 -     return funIn
 
- def funIn():
 -     print('宾果!你成功访问到我啦!')
 
- funOut()() # 宾果!你成功访问到我啦!
 
- go = funOut()
 - go() # 宾果!你成功访问到我啦!
 
 复制代码
函數帶
有括號 () 表示 
執行函數+返回值(如果有返回值,默認為 None),
沒有括號 表示 
返回內存地址
A 表示返回函數 A 內存地址
A() 表示執行函數+返回值(如果有返回值)
A()() 表示執行函數+返回值(如果有返回值)+返回值(如果有返回值) # 這邊你會發現重複 2 次返回值,那麼返回什麼值呢?請看以下示例:
- def A():
 -     return B
 
- def B():
 -     return 13
 
- print(A)
 - print(A())
 - print(A()())
 - print("------------------------")
 - print(B)
 - print(B())
 
 复制代码- <function A at 0x0000021053BEDF70>
 - <function B at 0x00000210540DBA60>
 - 13
 - ------------------------
 - <function B at 0x00000210540DBA60>
 - 13
 
 复制代码以上打印 A,A() 和 A()() 都不同結果,但是你會發現答案了,打印 A 返回內存地址 A,A() 返回內存地址 B(這裡補充一下 B 的內存地址就是 A 的返回值),A()() 返回 B 值
結論:
A() 就是 B
A()() 就是 B()
至於為什麼會打印?只要有括號 () 就會執行函數 A()() 表示 B() 也就表示執行函數 B(打印)