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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 如果将类属性 count 改为私有属性__count,则外部无法读取__count,但可以通过一个类方法获取

    class Person(object):


        __count = 0


        @classmethod

        def how_many(cls):

            return cls.__count

        def __init__(self,name):

            self.name=name

            Person.__count+=1


    print Person.how_many()


    p1 = Person('Bob')


    print Person.how_many()


    查看全部
  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变

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

    2018-08-02

  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

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

    2018-08-02

  • 装饰器作用

    查看全部
  • functools.partial中第一个参数为要简化的函数,第二个参数为要简化函数中的一个参数

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

    2018-08-01

  • import time
    def k0(g):
        def k1(y):
            t0=time.time()
            x=g(y)
            t1=time.time()
            print"call %s() in %f s"% (g.__name__,(t1-t0))
            return x
        return k1
    @ k0
    def k2(n):
        return reduce(lambda a,b:a*b,range(1,n+1))
    print k2(5)


    查看全部
  • 创建实例属性并排序

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

    查看全部
  • 任务

    返回闭包不能引用循环变量,请改写count()函数,让它正确返回能计算1x1、2x2、3x3的函数。

    • ?不会了怎么办

    • 考察下面的函数 f:

      def f(j):
          def g():
              return j*j
          return g

      它可以正确地返回一个闭包g,g所引用的变量j不是循环变量,因此将正常执行。

      在count函数的循环内部,如果借助f函数,就可以避免引用循环变量i。

      参考代码:

      def count():
          fs = []
          for i in range(1, 4):
              def f(j):
                  def g():
                      return j*j
                  return g
              r = f(i)
              fs.append(r)
          return fs
      f1, f2, f3 = count()
      print f1(), f2(), f3()


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

    2018-08-01

  • 这个闭包,刷新我的编程观念了,记录一下
    查看全部
    0 采集 收起 来源:python中闭包

    2018-07-31

  • import os
    import os.path
    from os import path
    from os.path import isdir, isfile


    查看全部
  • class Fib(object):

        def __call__(self,num):

            L = [0,1]

            i = 2

            while i < num:

                L.append(L[i-2]+L[i-1])

                i = i+1

            return L


    f = Fib()

    print f(10)


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

    2018-07-31

  • class Student(Person):


        __slots__ = ('score')


        def __init__(self, name, gender, score):

            super(Student,self).__init__(name,gender)

            self.score = score


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

    2018-07-31

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

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

    2018-07-31

  • class Student(object):
        def __init__(self, name, score):
            self.name = name
            self.__score = score
        @property
        def score(self):
            return self.__score
        @score.setter
        def score(self, score):
            if score < 0 or score > 100:
                raise ValueError('invalid score')
            self.__score = score


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

    2018-07-31

  • 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。

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

    2018-07-31

举报

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

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