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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性:

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

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

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


    查看全部
  • 如何让每个实例拥有各自不同的属性?由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值.

    xiaoming = Person()
    xiaoming.name = 'Xiao Ming'
    xiaoming.gender = 'Male'
    xiaoming.birth = '1990-1-1'

    实例的属性可以像普通变量一样进行操作:

    xiaohong.grade = xiaohong.grade + 1


    查看全部
  • pass的意思是啥也不做  是个占位符

    查看全部
  • 类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的,类通过 class 关键字定义。

    class Person(object):
        pass

    创建实例使用 类名+()

    xiaoming = Person()
    xiaohong = Person()


    查看全部
  • http://img1.sycdn.imooc.com//5e577189000124d509180537.jpg

    http://img1.sycdn.imooc.com//5e5771c90001a8f608660485.jpg

    http://img1.sycdn.imooc.com//5e57720b00017adb07200350.jpg

    面向对象编程

    查看全部
  • http://img1.sycdn.imooc.com//5e5770950001b9aa06140294.jpg

    http://img1.sycdn.imooc.com//5e57710e0001992107870299.jpg

    第三方模块

    查看全部
  • 要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。

    >>> 10 / 3
    3
    >>> from __future__ import division
    >>> print 10 / 3
    3.3333333333333335

    当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。

    查看全部
  • 同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。利用ImportError错误,我们经常在Python中动态导入模块:

    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO

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

    查看全部
  • import math

    math就是一个指向已导入模块的变量,通过该变量,我们可以访问math模块中所定义的所有公开的函数、变量和类:

    >>> math.pow(2, 0.5) # pow是函数
    1.4142135623730951
    >>> math.pi # pi是变量
    3.141592653589793

    只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:

    from math import pow, sin, log


    查看全部
  • 模块与包的概念

    http://img1.sycdn.imooc.com//5e5768ce00010a9008670172.jpghttp://img1.sycdn.imooc.com//5e5768bf00010a9008670172.jpg

    http://img1.sycdn.imooc.com//5e57691f0001411a06030539.jpg

    http://img1.sycdn.imooc.com//5e5769860001fe2308520166.jpg

    http://img1.sycdn.imooc.com//5e5769bf000102df07930440.jpghttp://img1.sycdn.imooc.com//5e576a1b0001c80908750517.jpg



    查看全部
  • functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值.

    >>> import functools
    >>> int2 = functools.partial(int, base=2)
    >>> int2('1000000')
    64
    >>> int2('1010101')
    85


    查看全部
    0 采集 收起 来源:python中偏函数

    2020-02-27

  • 要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数中:

    def log(f):
        def wrapper(*args, **kw):
            print 'call...'
            return f(*args, **kw)
        wrapper.__name__ = f.__name__
        wrapper.__doc__ = f.__doc__
        return wrapper

    因为我们也很难把原函数的所有必要属性都一个一个复制到新函数上,所以Python内置的functools可以用来自动化完成这个“复制”的任务:

    import functools
    def log(f):
        @functools.wraps(f)
        def wrapper(*args, **kw):
            print 'call...'
            return f(*args, **kw)
        return wrapper


    查看全部
  • 带参数的log函数首先返回一个decorator函数,再让这个decorator函数接收my_func并返回新函数:

    def log(prefix):
        def log_decorator(f):
            def wrapper(*args, **kw):
                print '[%s] %s()...' % (prefix, f.__name__)
                return f(*args, **kw)
            return wrapper
        return log_decorator
    
    @log('DEBUG')
    def test():
        pass
    print test()
    [DEBUG] test()...
    None


    查看全部
  • Python的装饰器是一个函数,在该函数中创建并返回一个可以执行原函数和新增代码的函数。

    要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用

    def log(f):
        def fn(*args, **kw):
            print 'call ' + f.__name__ + '()...'
            return f(*args, **kw)
        return fn



    查看全部
  • http://img1.sycdn.imooc.com//5e5734480001091608350407.jpg

    http://img1.sycdn.imooc.com//5e57348e00011d2c08180378.jpg

    http://img1.sycdn.imooc.com//5e573502000151b608140431.jpg

    装饰器的功能

    查看全部

举报

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

微信扫码,参与3人拼团

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

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