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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
如果是用python3写的话需要在map前面加上list
Python 3.x中的除法运算需要使用__truediv__

已采纳回答 / 布鲁斯先生
注意一下你的Python的版本,filter在Python2.7和Python3.x中有所区别:Pyhton2.7 返回列表,Python3.x 返回迭代器对象,有惰性运算的特性,节省了内存。
在python3中运行时,需要导入reduce(from functools import reduce)
def __float__(self):
return self.p*1.0/self.q
def __str__(self):
#p,q=float.as_integer_ratio(self.p/self.q)
#return '{}/{}'.format(p,q)

from fractions import Fraction
#字面意思,numerator获取分子,denominator获取分母
r=Fraction(self.p,self.q)
return '{}/{}'.format(r.numerator,r.denominator)
def __str__(self):
p,q=float.as_integer_ratio(self.p/self.q)
#float.as_integer_ratio(6/8) #Out[24]: (3, 4)
return '{}/{}'.format(p,q)
def __str__(self):
s=[]
a,b=0,1
for i in range(self.num):
a,b=a+b,a
s.append(b)
return str(s)
def __cmp__(self, s):
if self.score==s.score:
return -1 if self.name<s.name else 1
return 1 if self.score<s.score else -1
完结撒花 感谢老师
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod

f = calc_prod([1, 2, 3, 4])
print f()

最赞回答 / Awful_Leo
楼主可以把这种写法当成python的语法规范,比如为什么定义一个函数要用def,一样的道理。property是“属性”的意思,@property就是把实例方法当做属性调用的语法。set是“设置”的意思,setter就是“设置器”。@score.setter就是给这个类下的score属性重新设定值的时候,调用这个方法。按实际的用法,如果一个语句是s.score,就是要获取属性,所以python会直接找@property这个装饰器下面有没有score这个方法,有就直接调用了。如果另一个语句是s.score =...

最赞回答 / 慕码人442597
这是把方法装饰成属性,然后在调用的时候,用当作属性直接调用,代码会简洁一些
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消