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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 在Python中,函数其实是一个对象:

    所有的函数都是可调用对象。

    一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。



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

    2018-05-24

  • 在Python中,函数其实是一个对象:

    所有的函数都是可调用对象。

    一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。


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

    2018-05-24

  • 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。

    如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。


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

    2018-05-24

  • 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-05-24

  • def gcd(a, b):
        if b == 0:
            return a
        return gcd(b, a % b)
    
    class Rational(object):


    查看全部
  • 属性有类属性和实例对象属性,当定义一个类时就有了类属性,当创建一个实例对象时,会拷贝一份类属性给实例对象,即实例对象属性

    类属性和实例对象属性都分为私有属性和公有属性

    类的私有属性通过类方法调用

    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    查看全部
  • class Person(object):

        count=0

        def __init__(self,name):

            Person.count=Person.count+1

            self.name=name

        

    p1 = Person('Bob')

    print Person.count


    p2 = Person('Alice')

    print Person.count


    p3 = Person('Tim')

    print Person.count


    查看全部
  • 创建实例使用 类名+()


    查看全部
  • def gcd(a, b):
        if b == 0:
            return a
        return gcd(b, a % b)
    
    class Rational(object):
        def __init__(self, p, q):
            self.p = p
            self.q = q
    
        def __add__(self, r):
            return Rational(self.p * r.q + self.q * r.p, self.q * r.q)
    
        def __sub__(self, r):
            return Rational(self.p * r.q - self.q * r.p, self.q * r.q)
    
        def __mul__(self, r):
            return Rational(self.p * r.q , self.q * r.q)
    
        def __truediv__(self, r):
            return Rational(self.p * r.q, self.q * r.p)
    
        def __str__(self):
            g=gcd(self.p,self.q)
            return '%s/%s' % (self.p/g,self.q/g)
    
        __repr__ = __str__
    
    r1 = Rational(1, 2)
    r2 = Rational(1, 4)
    print(r1 + r2)
    print(r1 - r2)
    print(r1 * r2)
    print(r1 / r2)


    查看全部
  • r = f(i),r是一个函数,因为f()返回一个函数。

    r = f(i)的时候,f()已经执行,j得到参数i并保存在内存中。故能得到1,4

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

    2018-05-23

  • 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。

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


    查看全部
  • def cmp_ignore_case(s1, s2):

        s1=s1.lower()

        s2=s2.lower()

        if s1>s2:

            return 1

        elif s1<s2:

            return -1

        else:

            return 0


    print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

    理念就是把它字母变成小写的,然后在进行比较

    查看全部
  • f1, f2, f3 = count()

    高级序列赋值语句模式

    count()返回3个函数f,分别赋值给f1,f2,f3

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

    2018-05-23

  • 注意:map()函数不改变原有的 list,而是返回一个新的 list。

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


    查看全部

举报

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

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