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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
class Person(object):
def __init__(self,name,gender,**kw):
self.name = name
self.gender = gender
for k in kw:
setattr(self,k,kw[k])
kwargs={'age':25,'course':'Python'}
p = Person('LiLi','man',**kwargs)
print p.name
print p.gender
print p.age
print p.course
# def cmp_ignore_case(s1, s2):
# ???

print sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
好难理解,还好最终还是理解了。
在eclipse中写代码比较爽,有联想。

已采纳回答 / 乔帮主
你没有把这个结果返回这个函数里面定义的参数x啊,导致出了函数范围外,平方的结果无效了,最终返回的只是变量x啊,而变量x的范围是1到100,所以出现这样的结果不意外!
怪不得不理解,在最新的2.7 或者3.x 版本中,sorted函数的形式早就变了,这里老师还用的2.4 以前的写法,怪不得我们不理解。大家参考2.7或者3.x的sorted 格式要求,很简洁易懂。key 是一个关键字参数,传入一个函数,作用于每一个元素后再排序
def count():
fs = []
for i in range(1, 4):
def f(i):
def g():
return i*i
return g
fs.append(f(i))
return fs

f1, f2, f3 = count()
print f1(), f2(), f3()
只要用了reduce函数,那么传入一个空的list 就会出错:'reduce() of empty sequence with no initial value'
不用reduce用for循环像这样也会出错,调用一个没有任何元素的空list 就会返回所有元素乘积为1
def calc_prod(lst):
def prod():
a = 1
for i in lst:
a *= i
return a
return prod
我觉得前面的内容都so easy, 只有这一节





算了 不装13了 打游戏去了
import math
def is_sqr(x):
return type(math.sqrt(x)) == type(1)
print filter(is_sqr,range(1,101))

最赞回答 / xdfcc
这个你这样理解,先从理论上其实就是通过一个装饰器把一个函数变成另外一个函数!也就是例子上的通过def performance(f)把factorial(n)函数变成了fn函数,最后执行的也是fn函数,那么fn函数做了什么呢,看装饰器里定义的fn函数就知道,fn其实就是第一通过print输出了一个字符串,第二返回一个r函数,而r函数在fn里也定义了r=f(*args, **kw),也就是调用传进去的f函数其实就是调用factorial(n),你可以自己结合运行程序来理解
def cmp_ignore_case(s1, s2):
c1 = s1.lower()
c2 = s2.lower()
if c1 < c2:
return -1
if c1 > c2:
return 1
return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
def pf_dec(f):
@functools.wraps(f)
def fn(*args, **kw):
start = time.time()
res = f(*args, **kw)
end = time.time()
print '%s %s() in : %fs' % (unit,f.__name__,end - start)
return res
return fn
return pf_dec
class Person(object):
def __init__(self, name, score):
self.name = name
self.__score = score

p = Person('Bob', 59)

print p.name


try:
print p.__score
except:
print "attributeerror"
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消