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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • “伪私有属性”的概念:

    python的类中通过加双下划线来设置的“私有属性”其实是“伪私有属性”,原理是python编译器将加了双下划线的“__属性名”自动转换成“_类名__属性名”。所以我们在外部用“__属性名”访问私有属性的时候,会触发AttributeError,从而实现“私有属性”的特性。但通过“_类名__属性名”也可以访问这些属性。


    查看全部
  • class Person(object):    #设置类属性    __count_of_class = 'original count_of_class'    def __init__(self, name):        self.name = name        print('in class Person : count_of_class = ', Person.__count_of_class,'\n') #初始化实例p1p1 = Person('Bob')#在实例p1上修改属性值p1.__count_of_class='I\'m not the original count_of_class!'print('p1\'s _Person__count_of_class = ',p1._Person__count_of_class)print('p1\'s __count_of_class = ',p1.__count_of_class,'\n') #在类Person上修改属性值Person.__count_of_class = 'I\'m not the original count_of_class!'#将这句注释取消掉,会发现真正的私有属性的值也改变了#Person._Person__count_of_class = 'I\'m not the original count_of_class!'print('Person\'s _Person__count_of_class = ',Person._Person__count_of_class)print('Person\'s __count_of_class = ',Person.__count_of_class)

    查看全部
  • 偏函数的例子:

    def int2(x,base=2):

        return int(x,base)

    无需定义新的函数,直接一句命令搞定。

    import functools

    int2 = functools.partial(int, base=2)


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

    2019-01-22

  • 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#返回装饰器函数

    查看全部
  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

    先计算头两个元素:f(1, 3),结果为4;
    再把结果和第3个元素计算:f(4, 5),结果为9;
    再把结果和第4个元素计算:f(9, 7),结果为16;
    再把结果和第5个元素计算:f(16, 9),结果为25;
    由于没有更多的元素了,计算结束,返回结果25。

    上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。


    查看全部
  • 利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。

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


    查看全部
  • 因为 Python 定义了__str__()__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员

    一般用__repr__ = __str__定义

    查看全部
  • 装饰器:

    打印日志:@log

    检测性能:@performance

    数据库事务:@transaction

    URl路由:@post('/register')

    查看全部
  • 在__call__中,新传入的额外参数不需要self.,因为其不是类本身实例的属性

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

    2019-01-21

  • 在Python中,函数也是对象,对象和函数的区别并不显著。

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

    2019-01-21

  • __slots__ = ('name', 'gender', 'score')

    __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。

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

    2019-01-21

  • @property
        def score(self):
            return self.__score

    属性方法:

    把方法装饰成属性,然后在调用的时候,用当作属性直接调用,使得代码简洁一些


    >>> s.score = 60 # OK,实际转化为s.set_score(60)

    >>> s.score # OK,实际转化为s.get_score()

    查看全部
    0 采集 收起 来源:python中 @property

    2019-01-21

  • __slots__ = ('score',)

    不加逗号得到的是str类型,而不是tuple类型,所以要养成单个元素的tuple加逗号的习惯。

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

    2019-01-21

  • 用装饰器函数把 方法“装饰”成属性调用

    用了 @property  就会产生一个 @***.setter   后面这个是用来设置前面那个类的参数的

    查看全部
    0 采集 收起 来源:python中 @property

    2019-01-21

  • Python2.2以及以后的版本中增加了一个算术运算符" // "来表示整数除法,返回不大于结果的一个最大的整数,而" / " 则单纯的表示浮点数除法

    1. 地板除法:用//表示,不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。比如 1//2 = 0, 1.0//2= 0。

    2. 传统除法:用/表示,对整数之间的/,执行地板除,但对有浮点数参与的除法则执行传统意义上的除法。比如 1/2 = 0, 1.0/2=0.5。

    查看全部

举报

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

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