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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 可以给函数起个“别名”来避免冲突: from math import log from logging import log as logger # logging的log现在变成了logger print log(10) # 调用的是math的log logger(10, 'import from logging') # 调用的是logging的log Python的os.path模块提供了 isdir() 和 isfile()函数
    查看全部
  • functools可以用来自动化完成这个“复制”的任务,把原函数的一些属性复制到新函数中 import functools def log(f): @functools.wraps(f) def wrapper(*args, **kw): print 'call...' return f(*args, **kw) return wrapper 注意@functools.wraps应该作用在返回的新函数上。
    查看全部
  • 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 要让 @log 自适应任何参数定义的函数,可利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用 def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn
    查看全部
  • >>>map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。 使用匿名函数,可以不必定义函数名,直接创建一个函数对象,很多时候可以简化代码: >>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) [9, 5, 3, 1, 0]
    查看全部
  • def __call__(self,num): a,b,L = 0,1,[] for n in range(num): L.append(a) a,b = b,a+b return L
    查看全部
    0 采集 收起 来源:python中 __call__

    2015-04-12

  • https://pypi.python.org
    查看全部
  • class Student(object): def __init__(self, name, score): self.name = name self.__score = score self.__grade = self.__grade_set(score) @property def score(self): return self.__score @score.setter def score(self, score): if score < 0 or score > 100: raise ValueError('invalid score') self.__score = score self.__grade = self.__grade_set(score) @property def grade(self): return self.__grade def __grade_set(self,score): tmp = 'A' if score>80: tmp = 'A' elif score==60: tmp = 'B' elif score<60: tmp = 'C' return tmp
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • 偏函数结合匿名函数使用,采用简洁的代码实现程序功能
    查看全部
    0 采集 收起 来源:python中偏函数

    2015-04-12

  • def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure) 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。 返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    查看全部
    0 采集 收起 来源:python中闭包

    2015-04-12

  • def __init__(self, num): self.num = num self.fib = [] if num==1: self.fib = [0] elif num ==2: self.fib =[0,1] elif num>2: n=3 self.fib =[0,1] while(n<=num): #print self.l[n] value= self.fib[n-2]+self.fib[n-3] self.fib.append(value) n=n+1 def __len__(self): return self.num def __str__(self): if self.num ==0: return "" list_str ='[' for x in self.fib: list_str=list_str+str(x)+',' list_str =list_str[:-1]+']' return list_str __repr__=__str__
    查看全部
    0 采集 收起 来源:python中 __len__

    2018-03-22

  • 装饰器类似面向切面编程 注解? 简化代码,增强代码的复用率
    查看全部
  • def count(): fs = [] for i in range(1, 4): n = i def g(n): def h(): return n*n return h fs.append(g(n)) return fs f1, f2, f3 = count() print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2015-04-12

  • class Person(object): def __init__(self,name,gender,birth,*args,**kw): self.name = name self.gender = gender self.birth =birth for k,v in kw.iteritems(): setattr(self,k,v) xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job
    查看全部
  • # -*- coding: utf-8 -*- from __future__ import unicode_literals s = 'am I an unicode? 中问' print isinstance(s, unicode)
    查看全部
  • def performance(unit): def perf(f): t1 = time.time() print t1 def wrapper(*args,**kw): print 'call factorial() in',unit return f(*args,**kw) t2 = time.time() print t2 print 'use time :',t2-t1 return wrapper return perf
    查看全部

举报

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

微信扫码,参与3人拼团

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

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