返回函數

      在〈返回函數〉中尚無留言

返回值

高階函數的返回值, 除了可以是一般的資料型態外, 也可以是函數, 由下面的例子可以得知實作的方式

def math(args):
    def sum():
        result=0
        for x in args:
            result += x
        return result
    return sum
f=math(range(1,101))
print(f())

在函數裏, 還有函數, 這若是在強型語言中, 寫成這樣絕對會被槍斃的, 代表你根本不懂程式. 但在Python中有著極強大的功能. 所以請注意, 別把Python的觀念用在強型語言上, 否則你連面試的機會多沒有.

1. 函數裏又定義函數, 稱為內部函數. 內部函數有一個一般型態的返回值. 外部函數也有返回值, 但返回的是函數.

2. 由下可知, f1跟f2是二個不相同的函數, 不互相影響

f1=math(range(1,101))
f2=math(range(1,101))
print(f1==f2)
結果 :
False

Closure

在下面的函數中, 迴圈會跟三次迴路, 每一個迴路都會傳回一個內部函數, 然後放入fs list中. 最後在外面使用 f[0]()調用函數. 但這三個函數都是 9, 原因是因為 i 都跑到3了. 然後才執行 f[0](), 所以結果三個都是9

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs
f = count()
print(f[0](), f[1](), f[2]())

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *