为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • //表示整数除法,/表示浮点数除法。
    查看全部
  • 要表示有理数,可以用一个Rational类来表示: class Rational(object): def __init__(self,p,q): self.p=p self.q=q 如果要让Rational进行+运算,需要正确的实现__add__: class Rational(object): def __init__(self,p,q): self.p=p self.q=q def __add__(self,r): return Rational(self.p*r.q+self.q*r.p,self.q*r.q) def __str__(self): return '%s/%s'%(self.p,self.q) __repr__=__str__
    查看全部
  • # -*- coding: utf-8 -*- # 返回闭包不能引用循环变量,请改写count()函数,让它正确返回能计算1x1、2x2、3x3的函数。 def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g r = f(i) fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-19

  • def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() print f1(),f2(),f3() # 9 9 9 原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。 使用count()访问不了内层函数f()
    查看全部
    0 采集 收起 来源:python中闭包

    2017-08-19

  • 把一个类的实例变成str,就需要实现特殊方法__str__() def __str__(): return '(Person:%s,%s)'%(self.name,self.gender)
    查看全部
  • getattr(s,'name') #获取新属性 setattr(s,'name','Adam')#设置新的name属性
    查看全部
  • python 返回函数 # -*- coding: utf-8 -*- # 请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。 def calc_prod(lst): def lazy_prod(): def f(x, y): return x * y return reduce(f, lst, 1) # python中的reduce内建函数是一个二元操作函数, # 他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作: # 用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作, # 得到的结果再与第三个数据用func()函数运算,最后得到一个结果。 # reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100, return lazy_prod f = calc_prod([1, 2, 3, 4]) print f()
    查看全部
  • %用法见http://www.runoob.com/python/python-strings.html
    查看全部
  • dfs
    查看全部
  • 不同模块中可有相同名字的函数,不同包中可有相同名字的模块
    查看全部
  • 两种模块调用方法: 1.直接import **(内容) 之后调用函数时,要加模块名,如math.pow 2.使用from **(模块) import **(内容) 后面调用时,无需加模块名,如pow 注:重名时,可用from ** import ** as **
    查看全部
  • # -*- coding: utf-8 -*- # 对字符串排序时,有时候忽略大小写排序更符合习惯。 # 请利用sorted()高阶函数,实现忽略大小写排序的算法。 # 输入:['bob', 'about', 'Zoo', 'Credit'] # 输出:['about', 'bob', 'Credit', 'Zoo'] def cmp_ignore_case(s1, s2): s1=s1.lower() s2=s2.lower() if s1 > s2: return 1 if s1 < s2: return -1 return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp_ignore_case) sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
    查看全部
  • 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 对于阶乘函数,@log工作得很好: @log def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) 结果: call factorial()... 3628800 但是,对于参数不是一个的函数,调用将报错: @log def add(x, y): return x + y print add(1, 2) 结果: Traceback (most recent call last): File "test.py", line 15, in <module> print add(1,2) TypeError: fn() takes exactly 1 argument (2 given) 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • **kw是关键字参数,用于字典 iteritems()用于字典kw的遍历 setattr(self, k, v)就等价于self.k = v 综上就是,遍历dict kw 中的属性,给每个属性设置了属性值 # for i, j in kw.iteritems(): # setattr(self, i, j) self.__dict__.update(kw) print filter(lambda x: x == x.strip('__'),dir(p)) 输出结果:['age', 'course', 'gender', 'name']
    查看全部
  • filter(lambda x:x[:2]<>'__',dir(s))
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

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