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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 求最大公约数:用辗转相除法 递归函数

    def gcd(a,b):

        if b==0:

            return a 

        return gcd(b,a%b)


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

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

    查看全部
  • isinstance()可以判断子类是否继承了父类的属性;

    eg:class Person():

                def __init__(self,name,score):

                        self.name = name

                        self.score = score

     class Num(Person):

    t = num

    isinstance(t,Person)来判断

    isinstance是个判断类型的函数

    查看全部
  • (student: %s, %s, %s)' %(self.name, self.gender, self.score)

    查看全部
  • Rational里:p-分子 q-分母,表示有理数p/q。

    r1 = Rational(1, 3)  即1/3
    r2 = Rational(1, 2)  即1/2
    r1+r2就是使用__add__方法,即__add__(r1,r2)来实现:带入__add__(self,r)方法中
    __add__(r1,r2)的返回值是 Rational( r1.p*r2.q(1*2)+r1.q*r2.p(3*1) , r1.q*r2.q(3*2))=Rational(5,6)
    而Rational类最后是调用下面方法输出结果,即
    def __str__(self):
            return '%s/%s' % (self.p, self.q)
    最后输出结果为5/6
    也可以最初将r1、r2的值分别带入Rational类输出,那么
    r1 = Rational(1, 3)=1/3
    r2 = Rational(1, 2)=1/2
    那么你算一下r1+r2=5/6即验证了上面的__add__方法,__add__方法其实是分数乘法通分的过程。

    __add__(self,r)是表示用实例本身和传入的第二个实例,其两者都是实例。r.q--r的分母;self.p--self的分子

    查看全部
  • 一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 PersonStudent 将没有 namegender

    函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。


    查看全部
  • sorted()自定义排序函数

    sorted(list,排序函数f)

    它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0
    print sorted([36, 5, 12, 9, 21], reversed_cmp)
    
    》》》[36, 21, 12, 9, 5]


    查看全部
  • filter()函数
    filter(函数f,list)

    filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    筛子过滤时,掉下去的元素就是需要的元素。(满足条件的元素组合到一起形成新的list)

    def is_odd(x):
        return x % 2 == 1
     print filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
     
     》》》[1, 7, 9, 17]



    查看全部
  • reduce()函数

    reduce(函数f,list,初始值):reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    def prod(x, y):
        return x*y
    print reduce(prod, [2, 4, 5, 7, 12])
    
    》》》3360(2*4*5*7*12)


    查看全部
  • map()函数

    map(函数f,list):它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

    def f(x):
        return x*x
    print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    》》》[1, 4, 9, 10, 25, 36, 49, 64, 81]


    查看全部
  • range(10)

    [0,1,2,3,4,5,6,7,8,9]

    从0开始数的10个数

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

    2019-01-21

  • __init__ 初始化生成斐波那契数列L,传入num是其长度,range(num)就是num次循环;斐波那契数列是以0, 1开头的,后一位为前两位之和,所以初始化前两位为a,b = 0, 1   所以第三位就是a+b,将第一位a存入列表L,第一次循环生成第三位,一二位往后挪一位,所以a=b, b=a+b;循环完毕,列表生成完毕。

    __str__  用函数str()将列表转换成string,并返回.使得f可以打印出来

    __len__ 函数len(),返回列表L长度


    查看全部
    1 采集 收起 来源:python中 __len__

    2019-01-21

  • a, b = b, a + b和a=b;b=a+b不一样

    a, b = b, a + b 先计算右边
    假设a=0 b=1那么a, b = b, a + b 就是 a = 1 , b = a+b = 1

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

    2019-01-21

  • 为什么返回都是9?

    里面定义f(j),外面调用f(i),什么用意。

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

    2019-01-21

  • 对于setatte()和getattr():

      属性已经存在:需要加''

      不存在:不需要加''

    查看全部

举报

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

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