为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
环境:Python 3.x.x
print (filter(lambda s: s and len(s.strip()) > 0,['test', None, '', 'str', ' ', 'END']))
提示:<filter object at 0x01DC1390>
解题关键是,内层函数应该使用函数参数接收外层函数的“可变变量”
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()
小白一枚 说一下我很可能错误的理解,原来的代码的每一个返回的函数有点像一个c里的函数指针(姑且这么说,应该是不对的)他们都指向i那个位置,所以相当于公用一个i,修改后相当于每次传入i时候 把i给了j,并且给了j一个位置,每次传入都会新开一个位置,所以函数指向的不是一个j 应该是j 新开的j 又新开的j 姑且这么理解 有大神懂得可以再告诉我
我想问问 你们都在什么软件上编程啊?
##sorted(L)返回的是一个新的list,该list成员为 student类的实例,直接输出实例的话,调用__repr__方法,输出的是实例的首地址,所以要让__repr__=__str__, 使输出指定字符串
发现一个很有用的东西,虽然可能用的机会不多,但对于理解这个题,返回函数中的for 循环有很大帮助

在定义函数中,for循环 循环几次,一定要有几次调用,例如题上的定义了三次count,如果定义两个就会报错。
换句话说,每次循环都是对应一个for循环的值的,不能多不能少,一一对应。然后就是重点了,老师上面说的,f1,f2,f3,没有调用f函数的,每次调用count的时候i的值其实没有记录,等到f1()的时候,其实定义f1,f2,f3已经调用函数运行完了,运行顺序要搞清楚,定义f1 f2 f3的时候,就已经调用过函数了,等到调用f函数的时候,i = 3了。说到这,老师给的参考代码也应该可以看懂了
要根据相应的Python版本查API,才好完成这个任务。例如:https://docs.python.org/3/library/functions.html#sorted
老师说的很明白,但是说的有点难懂,都是迷惘好长时间看看别人的说法,哦原来是这样,然后回头看老师说的,原来老师都说的很清楚了,但是老师说的还是对于理解这个定义一点用都没有,因为是懂了回来看老师说的结论,才能理解。真是很蛋疼
import math

def is_sqr(x):
return (math.sqrt(x) in range(1,11))

print filter(is_sqr, range(0, 101))
表示计算机出生的同学也没看懂,貌似我没认真学
因为lambda:'A' 是一个参数为空,返回值为‘A’的函数,get_grade获得的是这个函数的地址。。
不看评论不会做系列
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)可以计算出函数的返回值 @慕尼黑
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消