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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 这里有两个对象,一个是r1,另一个是r2,分别对应def __add__(self,r):
    中的self,r,r是一个对象,它有两个属性p和q,r1 = Rational(1, 2),r2 = Rational(1, 4),所以self.p=r1.p=1, self.q=r1.q=2,

    r.p=r2.p=1, r.q=r2.q=3,

    return Rational(self.p * r.q + self.q * r.p, self.q * r.q) 表示返回两个参数p和q的值,以便下面

    def __str__(self):
       return '%s/%s' % (self.p, self.q)

    调用


    查看全部
  • 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。

    要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。

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

    查看全部
  • 这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

    查看全部
  • class Student(Person):
        def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)
            self.score = score

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

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


    查看全部
  • import time


    def performance(f):

        def pf(x):

            timestr = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))

            print("call "+f.__name__+"() in, "+timestr)

            return f(x)

        return pf


    @performance

    def factorial(n):

        return reduce(lambda x,y: x*y, range(1, n+1))


    print factorial(10)



    查看全部
  • __str__()用于显示给用户,而__repr__()用于显示给开发人员。如果在交互式命令行下 直接敲变量 s 就会返回<main.Person object at XXX> 这样的东西如果你配置了__repr__ = __str__你交互式命令行下打print s 和 直接敲变量 s 的返回值是一样的 都是(Student: Bob,male,88)...

    查看全部
  • fs列表并不是[i*i,i*i,i*i],到这一步的时候,其实f()函数还没有被调用过。。。所以返回的应该是[f(i),f(i),f(i)],我想表达的意思是,
    a,b,c=[1,2,3]
    print a,b,c
    ---1,2,3
    a=[1,2,3]
    print a
    ----[1,2,3]
    这两种.正常的数组可以用一个变量接收整个数组,也可以用三个变量接收数组中的每一个值

    查看全部
  • def count():

        fs = []

        for i in range(1, 4):

            def f(i):

                return i*i#返回数

            fs.append(f(i))#所以fs中的元素是 数值

        return fs

    f1, f2, f3 = count()

    print f1, f2, f3#fs中的元素是 数值(所以不能用print f1(), f2(), f3())

    下面的:

    def count():

        fs = []

        for i in range(1, 4):

            def f(i):

                return lambda:i*i#返回函数

            fs.append(f(i))#fs中的元素是 函数

        return fs


    f1, f2, f3 = count()

    print f1(), f2(), f3()#fs中的元素是 函数


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

    2018-08-09

  • import math

    def is_sqr(x):

        r='{:g}'.format(math.sqrt(x))

        return r.isdigit()

    print filter(is_sqr, range(1, 101))

    运行正确

    查看全部
  • def add(x,y,f):
        return f(x)+f(y)
    add(-5,9,abs)
    #变量名可以指向函数,函数可以通过变量传给另外一个函数
    查看全部
  • 接收函数的函数

    查看全部
  • class Person(object):

        def __init__(self,name,gender,brith,**kw):

            self.name=name

            self.gender=gender

            self.brith=brith

            self.__dict__.update(kw)

        

            

    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')


    print xiaoming.name

    print xiaoming.job


    查看全部
  • map()----返回一个List列表,接收单个参数map(f(*),List)

    reduce()---返回一个List列表,接收两个参数reduce(f(*,*),List)

    filter()---返回一个筛选之后List,接收单个参数filter(f(*),List)

    sorted()---自然排序返回List列表,可以接收多个参数,sorted(List,cmp,key)


    查看全部
  • 'call %s() in %fs'是格式字符串,%s是参数待替换的位置 
    (f.__name__, (t2 - t1))是格式字符串传入的参数,参数用一个元组来表示
    中间的%是分隔符
    f.__name__:__name__是一个特殊方法,存储的是函数的名称,每一个函数都会自动有这个方法


    查看全部

举报

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

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