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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰

已采纳回答 / 慕粉1430088708
没有改变。函数名可以看做一个指向该函数的指针, foo = timeit(foo)其实把foo的函数指针指向了timeit 函数,其中timeit返回一个有原来foo函数功能并添加计时的新函数warpper并不能调用了,装饰过后只有装饰后的元素了这样的场景是没错的,但设想一种场景:你已经写好foo函数了,后面也写了很多调用foo的地方,如果你想统计foo的运行时间,你是不是得把所有用到foo()的地方改写成g(foo),再一个你把这个函数交给别人用,那你是不是就不能改了。所以装饰器的效果就体现出来了,只需...

已采纳回答 / 慕用3807241
先写newfn函数,然后写f1和f2的时候在上边加一句@newfn,下边的g1=new_fn(f1)改成g1=f1就行了

已采纳回答 / 慕粉3636939
math.sqrt(x)返回的对象为float,可以试一下:print isinstance(math.sqrt(4), float)

最新回答 / Hello_大茜
sorted()接收reversed_cmp函数的排序规则,对[36,5,12,9,21]这个list进行排序

已采纳回答 / _野良
在for i in range(1, 4) 这个迭代中 i 的值是一个会变动的值 在闭包中 不能引用会变动的变量值,所以不能直接用def f(i): return i * i 因此需要把 每次迭代 i 的值 赋予一个变量 即(m = i) 定义函数写成def f(m=i): return m * m 

已采纳回答 / ikobicc
def calc_prod(lst):    def lazy_sum():        sum=1;        for x in lst:            sum=sum*x        return sum    return lazy_sum()f = calc_prod([1, 2, 3, 4])print f因为定义calc_prod(lst)函数时,返回的最终结果是一个int类型结果

已采纳回答 / haoliyou
for math.sqrt(x) in range(1,101):SyntaxError: can't assign to function call这好像是说for的in前面不能是函数方法这类的,这个可以改成:<...code...>这就可以了,我也是新手,/抱拳

已采纳回答 / 孤独的小猪
在python3里面用items()替换iteritems() ,所以正确代码如下:<...code...>

最新回答 / Code_Boy
import os 导入了所有的os内容import os.path。只导入了os的path部分
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消