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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 习题
    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高

    可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。

    查看全部
  • 创建类属性:1、可以直接在 class 中直接写出(固定不变的属性)1、可以在class中再定义一次(根据实例动态变化的属性)

    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。

    查看全部
  • 定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性

    要定义关键字参数,使用 **kw。

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。

    查看全部
  • 创建实例属性:实例p1 姓名p1.name='...'  性别p1.gender='male'.....

    查看全部
  • 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。

    查看全部
  • 在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性:

    class Person(object):    def __init__(self, name, gender, birth):
            self.name = name
            self.gender = gender
            self.birth = birth

    __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。

    相应地,创建实例时,就必须要提供除 self 以外的参数:

    xiaoming = Person('Xiao Ming', 'Male', '1991-1-1')
    xiaohong = Person('Xiao Hong', 'Female', '1992-2-2')


    查看全部
  • setattr(self, a, b)

    相当于self.a=b

    字典赋值方法:

    第一种:直接赋值法

    dict={'key':'value',}

    第二种:创建时赋值

    dict('key'='value',)

    查看全部
  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。

    查看全部
    0 采集 收起 来源:python中闭包

    2018-07-23

  • 要实现带参数的@performance,就需要实现:

    my_func = performance('ms')(my_func)

    需要3层嵌套的decorator来实现。

    参考代码:

    import time
    def performance(unit):
        def perf_decorator(f):
            def wrapper(*args, **kw):
                t1 = time.time()
                r = f(*args, **kw)
                t2 = time.time()
                t = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)
                print 'call %s() in %f %s' % (f.__name__, t, unit)
                return r
            return wrapper
        return perf_decorator
    
    @performance('ms')
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    print factorial(10)


    查看全部
  • 面向对象的基本思想:类和实例(如人类和某一个人)、数据封装(在类中可以封装实例的属性,使同类的不同实例有相同的数据类型但是有不同的属性)

    查看全部
  • python提供的模块管理工具:easy_install,pip(推荐使用,内置在2.7.9版本)

    通过pypi.pythoon.org查找相关模块名称 然后通过pip install+模块名安装模块

    查看全部
  • 可使用__future__来引入新版本的新功能
    当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。

    查看全部
  • 要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。

    try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。

    查看全部

举报

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

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