环境:Python 3.x.x
print (filter(lambda s: s and len(s.strip()) > 0,['test', None, '', 'str', ' ', 'END']))
提示:<filter object at 0x01DC1390>
print (filter(lambda s: s and len(s.strip()) > 0,['test', None, '', 'str', ' ', 'END']))
提示:<filter object at 0x01DC1390>
2017-08-24
def calc_prod(lst):
def xcheng():
return reduce(cheng,lst)
def cheng(x,y):
return x*y
return xcheng
f = calc_prod([1, 2, 3, 4])
print f()
def xcheng():
return reduce(cheng,lst)
def cheng(x,y):
return x*y
return xcheng
f = calc_prod([1, 2, 3, 4])
print f()
2017-08-24
小白一枚 说一下我很可能错误的理解,原来的代码的每一个返回的函数有点像一个c里的函数指针(姑且这么说,应该是不对的)他们都指向i那个位置,所以相当于公用一个i,修改后相当于每次传入i时候 把i给了j,并且给了j一个位置,每次传入都会新开一个位置,所以函数指向的不是一个j 应该是j 新开的j 又新开的j 姑且这么理解 有大神懂得可以再告诉我
2017-08-23
##sorted(L)返回的是一个新的list,该list成员为 student类的实例,直接输出实例的话,调用__repr__方法,输出的是实例的首地址,所以要让__repr__=__str__, 使输出指定字符串
2017-08-23
发现一个很有用的东西,虽然可能用的机会不多,但对于理解这个题,返回函数中的for 循环有很大帮助
在定义函数中,for循环 循环几次,一定要有几次调用,例如题上的定义了三次count,如果定义两个就会报错。
换句话说,每次循环都是对应一个for循环的值的,不能多不能少,一一对应。然后就是重点了,老师上面说的,f1,f2,f3,没有调用f函数的,每次调用count的时候i的值其实没有记录,等到f1()的时候,其实定义f1,f2,f3已经调用函数运行完了,运行顺序要搞清楚,定义f1 f2 f3的时候,就已经调用过函数了,等到调用f函数的时候,i = 3了。说到这,老师给的参考代码也应该可以看懂了
在定义函数中,for循环 循环几次,一定要有几次调用,例如题上的定义了三次count,如果定义两个就会报错。
换句话说,每次循环都是对应一个for循环的值的,不能多不能少,一一对应。然后就是重点了,老师上面说的,f1,f2,f3,没有调用f函数的,每次调用count的时候i的值其实没有记录,等到f1()的时候,其实定义f1,f2,f3已经调用函数运行完了,运行顺序要搞清楚,定义f1 f2 f3的时候,就已经调用过函数了,等到调用f函数的时候,i = 3了。说到这,老师给的参考代码也应该可以看懂了
2017-08-23
要根据相应的Python版本查API,才好完成这个任务。例如:https://docs.python.org/3/library/functions.html#sorted
2017-08-23
老师说的很明白,但是说的有点难懂,都是迷惘好长时间看看别人的说法,哦原来是这样,然后回头看老师说的,原来老师都说的很清楚了,但是老师说的还是对于理解这个定义一点用都没有,因为是懂了回来看老师说的结论,才能理解。真是很蛋疼
2017-08-23
import math
def is_sqr(x):
return (math.sqrt(x) in range(1,11))
print filter(is_sqr, range(0, 101))
def is_sqr(x):
return (math.sqrt(x) in range(1,11))
print filter(is_sqr, range(0, 101))
2017-08-23
因为lambda:'A' 是一个参数为空,返回值为‘A’的函数,get_grade获得的是这个函数的地址。。
2017-08-23
def performance(unit):
def perf_decorator(f):
@functools.wraps(f)
def wrapper(*args, **kw):
return f(*args, **kw)
return wrapper
return perf_decorator
print factorial.__name__
修改返回函数为return f(*args, **kw)可以计算出函数的返回值 @慕尼黑
def perf_decorator(f):
@functools.wraps(f)
def wrapper(*args, **kw):
return f(*args, **kw)
return wrapper
return perf_decorator
print factorial.__name__
修改返回函数为return f(*args, **kw)可以计算出函数的返回值 @慕尼黑
2017-08-23