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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • class Person(object):

        def __init__(self, name, score):
            self.name = name
            self.score = score
            self.get_grade = lambda: 'A'

    p1 = Person('Bob', 90)
    print p1.get_grade
    print p1.get_grade()

    可以直接在生成实例的时候创建函数对象

    查看全部
  • 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)

    设定任意多的参数def __init__( self,name, gender, birth,**kw):

     for k, v in kw.iteritems():            setattr(self, k, v)

    查看全部
  • 访问限制

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

    特殊属性:属性以"__xxx__"的形式定义,那它又可以被外部访问

    查看全部
  • 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

    查看全部
  • import time

    def performance(unit):
        def fn(f):
            def wapper(*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 wapper
        return fn


    @performance('ms')
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))

    print factorial(10)


    查看全部
    • **kw代表的是所有的类似 job='student'这样的参数,然后是以dict的形式传递给函数。等号前面的值作为dict中的key,等号后面的值作为dict中对应的value。

    • *args代表的是剩余的不带等号的参数,用元组的形式传递给函数内部处理。


    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


    查看全部
  • 初始化实例属性

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

    每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符

    print xiaoming.name
    # 输出 'Xiao Ming'
    print xiaohong.birth
    # 输出 '1992-2-2'


    查看全部
  • 创建实例属性:

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

    实例属性可以像变量一样操作

    xiaohong.grade = xiaohong.grade + 1


    查看全部
  • 定义类并创建实例:

    class Person(object):
        pass

    class定义类,类名大写字母开头,(object)表示该类是从哪个类继承下来的。

    创建实例 类名+()

    xiaoming = Person()
    xiaohong = Person()


    查看全部
  • 面向对象变成—类和实例

    • 类:用于定义抽象类型

    class  Person:

        pass

    • 实例:根据类的定义被创建出来

    xiaoming = Person()

    xiaojun = Person()

    xiaohong = Person()

    面向对象变成—数据封装

    class Person:

        def _init_(self,name):

            self.name = name

    p1 = Person('Xiao Ming')

    p2 = Person('Xiao Jun')

    p3 = Person('Xiao Hong')

    查看全部
  • 模块管理工具

    • easy_install

    • pip(推荐,已内置到python2.7.9)

    安装第三方模块

    命令提示符》输入命令pip install web.py

    检测是否安装成功》输入命令import web.py未报错

    查看全部
  • 使用_future_

    from _future_ import division

    新版本的特性与旧版本不兼容时,该特性在旧版本中添加到_future_中,以便旧代码能在旧版本中测试新特性。

    查看全部
  • 动态导入模块:

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


    查看全部
  • 导入模块

    import math→可访问math模块中定义的函数、变量、类

    导入os.path模块的方式

    • import os

    • import os.math

    • from os import math

    • from os.path import isdir,isfile(引用path模块的isdir,isfile这2个函数)

    名字冲突可给函数起别名:

    from logging import log as logger

    查看全部
  • print map(format_string, ['adam', 'LISA', 'barT'])
    查看全部

举报

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

微信扫码,参与3人拼团

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

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