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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • self.__dict__.update(kw)

    查看全部
  • 访问 p1.address 时,优先查找实例属性,返回'China'。

    访问 p2.address 时,p2没有实例属性address,但是有类属性address,因此返回'Earth'。

    可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。


    查看全部
  • 实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    class Person(object):
        count = 0
        def __init__(self, name):
            Person.count = Person.count + 1
            self.name = name


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

    class Person(object):
        def __init__(self, name):
            self.name = name
            self.__job = 'Student'

    但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。

    以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。

    查看全部
  • 要定义关键字参数,使用 **kw;

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

    参考代码:

    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)

    kw是字典,iteritems()用于遍历字典kw,而setattr(self, k, v)就等价于self.k = v

    查看全部
  • 数据输入方式有多样,python就定义了两种方法。open()这个主要是读文件,read()什么都能读

    查看全部
    0 采集 收起 来源:python中多态

    2018-09-20

  • *args和**kw都代表不确定的函数变量,即在函数调用时可以选择传入或者不传入参数,都不影响函数运行。

    其中*args将传入对象当成是元组对待;**kw将传入对象当成字典对待。**kw的作用是在函数调用时,可变参数的key,value值打包成dic,传给kw。因此是kw.iterable()。


    查看全部
  • class Person(object):

        __count = 0
        @classmethod
        def how_many(cls):
            return cls.__count
        def __init__(self,name):
            self.name=name
            Person.__count=Person.__count+1
            
    p1 = Person('Bob')
    p2 = Person('Alice')
    print Person.how_many()
    print Person.__count

    查看全部
  • 按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。

    class Person(object):
        pass

    创建实例使用 类名+()

    xiaoming = Person()
    xiaohong = Person()


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

    eg:

    from __future__ import division
    from __future__ import unicode_literals


    查看全部
  • Map()是python中内置的高阶函数,接收一个函数f和一个list,通过f作用在list的每个元素上,得到一个新的list并且返回。Map函数不会改变原来的list,是得到一个新的list。

    由于list包含的元素可以是任何类型,因此,map()不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。

    def f(x):

        return x*x

    print map(f,(1,2,3,4,5,6))

    输出结果:[1,4,9,16,25,36]


    查看全部
  • sqrt()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。

    查看全部
  • 所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。

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


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

    2018-09-19

  • 直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self

    查看全部
  • def performance(unit):#创建带参数的decorator,其中unit为参数的形参    def perf_decorator(f):#定义装饰器函数         @functools.wraps(f)#将原函数f的所有属性复制到新函数wrapper              def wrapper(*args, **kw):#定义装饰函数             t1 = time.time()#记录函数开始时间                      = f(*args, **kw)#运行函数f                         t2 = time.time()#记录函数结束时间                         = (t2 - t1) * 1000 if unit=='ms' else (t2 - t1)#计算函数f的运行时间                         print 'call %s() in %f %s' % (f.__name__, t, unit)#打印函数f的名称,运行时间以及所带参数的实参                         return r#调用原函数f         return wrapper#返回装饰函数    return perf_decorator#返回装饰器函数

    https://img1.sycdn.imooc.com//5ba24c680001f08209950382.jpg

    查看全部

举报

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

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