閉包與呼叫函式的括號
在第二十講 的課堂中小甲魚舉的例子如圖中的三個問題
1. 為何FunY 可不用括弧?
2. return FunY 與 return FunY() 的差別分別是什麼?
3. 為什麼可以用FunX(x) 就把值帶入至FunY()??
以為自己懂了函數,看完這講又不懂了,有勞各位大神解惑,感謝
{:10_305:}没括号是返回方法对象,有括号是返回方法调用,
i = Funx(8) 相当于
def i(y):
return 8*y
1和2,没有括号情况下,表示返回函数指针,有括号就表示调用这个FunY函数了,这里要返回函数指针,再需要的时候调用!
3,FunY在FunX内部,在外部不能访问到,只能通过FunX来访问!
FunX(8)(5)表示先给Funx传入x参数,再给FunY传入y参数 CH10 发表于 2020-9-21 09:18
没括号是返回方法对象,有括号是返回方法调用,
i = Funx(8) 相当于
def i(y):
hi ch10
如果返回方法調用就是呼叫函數
那返回方法對象的作用是?....一直搞不明白
是如同 id(x) 這樣的意思嗎?
弱弱的佳佳 发表于 2020-9-21 09:32
1和2,没有括号情况下,表示返回函数指针,有括号就表示调用这个FunY函数了,这里要返回函数指针,再需要的 ...
Hi 弱弱的佳佳
1. "指針" 可以理解是object嗎?
2. 若一個函式內部還有函式,一般都可以由最外層的函式來帶入這樣的理解正確嗎?
感謝 闭包(closure)函数式编程的一个重要的语法结构
如:
>>> def funx(x):
def funy(y):
return x*y
return funy
>>> funx(3)(6)
18
>>>
//当funx(x)中的x在funy(y)中被调用时,就形成了闭包
//可以 funx(A)(B),A是第一个函数,B是第二个函数。
//也可以
>>> i = funx(3)
>>> i (6)
18 xavier113 发表于 2020-9-21 12:35
Hi 弱弱的佳佳
1. "指針" 可以理解是object嗎?
1,指针可以理解为一个object,可以用id()查看内存地址
2,可以这么理解,外部函数内部的内部函数只能通过外部函数来访问,因为内部函数只存在于内部,这就是闭包,当外部函数使用结束,内部函数也就不存在了! 弱弱的佳佳 发表于 2020-9-21 16:37
1,指针可以理解为一个object,可以用id()查看内存地址
2,可以这么理解,外部函数内部的内部函数只能通 ...
Hi 弱弱的佳佳
感謝回覆
1. 查看了 FunY 的id 與指針的所打印出的位置不相同又搞糊塗了...
2. 明白 xavier113 发表于 2020-9-22 09:45
Hi 弱弱的佳佳
感謝回覆
每次运行的内存地址肯定不一样呀,这是操作系统自行分配的
页:
[1]