Quick actions

cmd+k|ctrl+k

Navigation

Languages

Inner function closure 4

Snippet info

Language

Python

Visibility

public

Author

kachuntong01

Created

2025-06-24T01:41:58.080482Z

Updated

2025-06-24T02:24:11.582315Z

def counter(fn):
    count = 0
    def inner(*args, **kwargs):
        nonlocal count #話比python知唔係inner內部(local)的varibles
        count += 1
        print('Function {0} was called {1} times'.format(fn.__name__, count))
        return fn(*args, **kwargs) #add function 黎左呢度
    return inner
    
def add(a, b=0): #a is neccessary b default = 0 
    return a + b
    
add = counter(add) #(add) is inside inner closure and now (add) --> (fn)    counter(fn) assign 左比add
result = add(1,2) 
#result = 3 (1+2) # result = add(1,2) --> result = counter(fn)(1,2) --> inner(1,2) #1,2 as *arg **kwargs is empty 
#count 0+1=1 ; print('Function {0} was called {1} times'.format(fn.__name__, count)) 會印出Function add was called 1 times
#fn.__name__ 是add 即{0} <-- 0號位 count = 1  即{1} <--1號位
#return fn(*args, **kwargs) => fn(1,2) *args is now emtpy (a=1, b=2) is **kwargs => 1->a 2->b 所以result = 1+2 = 3
INFO