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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。 try: from cStringIO import StringIO except ImportError: from StringIO import StringIO
    查看全部
  • Python内置的functools可以用来自动化完成原函数属性的复制工作。
    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。 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 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn
    查看全部
  • 请编写一个@performance它可以打印出函数调用的时间。 import time def performance(f): def fn(*args, **kw): t1 = time.time() r = f(*args, **kw) t2 = time.time() print 'call %s() in %fs' % (f.__name__, (t2 - t1)) return r return fn @performance def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) index.py 1 2 3 4 5 6 7 8 9 10 import time def performance(f): ??? @performance def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
    查看全部
  • 当新版本的一个特性和旧版本不兼容时,该特性将会在旧版本中添加到__feature__中,以便旧的代码能在旧版本中测试新特性
    查看全部
  • 由于把原函数改成了(*args,**kw),因此无法获得原函数的原始参数信心,即便我们采用固定参数来装饰只有一个参数的函数。
    查看全部
  • 限制类里哪些属性可用
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-05-15

  • 设置类的某些属性的读写判断与只读
    查看全部
    0 采集 收起 来源:python中 @property

    2017-05-15

  • 属性访问控制: **如果一个属性由双下划线开头(__),该属性就无法被外部访问 **以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。
    查看全部
  • python中初始化实例属性: *在定义 类时,可以为类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用--》能为每个实例添加统一的属性。 *__init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法) *Person类的__init__方法 可以接受任意关键字参数--》 使用**kw表示; * 除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。 ex: class Person(object): def __init__(self, name, gender, birth, **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
    查看全部
  • python中创建实例: 由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值。 实例的属性可以像普通变量一样进行操作:xiaohong.grade = xiaohong.grade + 1 ex: class Person(object): pass p1 = Person() p1.name = 'Bart' p2 = Person() p2.name = 'Adam' p3 = Person() p3.name = 'Lisa' L1 = [p1, p2, p3] L2 = sorted(L1, lambda p1,p2:cmp(p1.name, p2.name)) print L2[0].name print L2[1].name print L2[2].name
    查看全部
  • 写了个过滤了__xxx__特殊属性的程序: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score def whoAmI(self): return 'I am a Student, my name is %s' % self.name def Fileter_xx_(x): return not '__' in x print filter(Fileter_xx_, dir(123)) s = Student('Bob', 'Male', 88) print type(s)
    查看全部
  • 如何区分包和普通目录: 在包下面有且必须有_init_.py;
    查看全部
  • r = f(*args, **kw) 当函数f的参数个数不确定时,需要用到*args和**kw,*args将传入的形式为1,2,3的参数值自动转换为一个tuple,**kw将形式为a=1,b=2的参数自动转换为dict,在函数内部可以取出参数值使用
    查看全部
  • 高阶函数有点像数学上的复合函数样
    查看全部

举报

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

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