def lazy_sum(*args):
def sum():
ax = 0
for i in args:
ax = ax + i
return ax
return sum
f = lazy_sum(1,2,3)
f
<function __main__.lazy_sum.<locals>.sum()>
f()
6
def count():
fs = []
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
count()
[<function __main__.count.<locals>.f()>,
<function __main__.count.<locals>.f()>,
<function __main__.count.<locals>.f()>]
f1,f2,f3 = count()
f1()
9
f2()
9
f3()
9
f = lambda x:x*x
f(5)
25
def build(x,y):
return lambda:x*x+y*y
def now():
print('20521')
f = now
f()
20521
now.__name__
'now'
f.__name__
'now'
def log(func):
def warpper(*args,**kw):
print('call %s():'%func.__name__)
return func(*args,**kw)
return warpper
@log
def now():
print('20521')
now()
call now():
20521
def log(text):
def decorator(func):
def wrapper(*args,**kw):
print('%s %s():'%(text,func.__name__))
return func(*args,**kw)
return wrapper
return decorator
@log('execute')
def now():
print('20521')
now()
execute now():
20521
int('1234')
1234
int('123',base=8)
83
def int(x,base=2):
return int (x,base)
int('10000')