关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
2017-12-04
class Person():
pass
xiaoming = Person()
xiaohong = Person()
print xiaoming
print xiaohong
print xiaoming==xiaohong
pass
xiaoming = Person()
xiaohong = Person()
print xiaoming
print xiaohong
print xiaoming==xiaohong
2017-12-04
import math
def add(x, y, f):
return f(x) + f(y)
print add(25, 9, math.sqrt)
def add(x, y, f):
return f(x) + f(y)
print add(25, 9, math.sqrt)
2017-12-03
*args, **kw:*args是一个tuple,而**kw是一个dict;
def kw_dict(**kw):
return kw
print kw_dict(a=1,b=2,c=3) # --> {'a':1, 'b':2, 'c':3}
当同时使用*args和**kw时,必须*args参数在**kw前;
def test( *args, **kw ):
print 'args : ', args
print 'kw : ', kw
test( 1, 2, 3, a = 1, b = 2, c = 3 )
#字数限制,结果自行copy尝试
def kw_dict(**kw):
return kw
print kw_dict(a=1,b=2,c=3) # --> {'a':1, 'b':2, 'c':3}
当同时使用*args和**kw时,必须*args参数在**kw前;
def test( *args, **kw ):
print 'args : ', args
print 'kw : ', kw
test( 1, 2, 3, a = 1, b = 2, c = 3 )
#字数限制,结果自行copy尝试
2017-12-01
这就是闭包的概念,即使包裹函数没了,但是还有嵌套变量存在。
改写前,f1(), f2(), f3()函数中对应的函数其实都是f(),参数只有最后一次循环的i = 3,所以得到的结果都为9。
改写后,f1(), f2(), f3()函数对应的其实是闭包函数g(),每一次循环时,包裹函数f()传给他一个值i,它是会记住的,在__closure__ 中能查询到.所以不会丢失
改写前,f1(), f2(), f3()函数中对应的函数其实都是f(),参数只有最后一次循环的i = 3,所以得到的结果都为9。
改写后,f1(), f2(), f3()函数对应的其实是闭包函数g(),每一次循环时,包裹函数f()传给他一个值i,它是会记住的,在__closure__ 中能查询到.所以不会丢失
2017-12-01