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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用:

    def log(f):
        def fn(*args, **kw):
            print 'call ' + f.__name__ + '()...'
            return f(*args, **kw)
        return fn


    查看全部
  • get_grade是在类Person中实例方法__init__中声明的一个函数,因p1.get_grade是Person的实例p1调用的一个函数就像实例p1调用变量(name、score),其输出的是get_grade的存储物理地址,而get_grade( )是Person里所定义的函数的一个执行(方法),Person的实例p1执行了函数get_grade,意思是执行了函数里的所定义的内容,其输出的是函数get_grade所定义的内容,总结来说:p1.get_grade是函数,p1.get_grade()是方法

    查看全部
  • list包含的元素是任意值,所以map()也可处理任意类型的list

    查看全部
  • map函数

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

    查看全部
  • 绑定任意参数,定义字典,在用setattr函数定义绑定、

    for k, v in kw.iteritems():
                setattr(self, k, v)


    查看全部
  • 获取类的信息:

    1、首先可以用 type() 函数获取变量的类型,它返回一个 Type 对象。

    2、可以用 dir() 函数获取变量的所有属性

    3、dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了

    >>> getattr(s, 'name')  # 获取name属性'Bob'
    
    >>> setattr(s, 'name', 'Adam')  # 设置新的name属性>>> s.name
    'Adam'
    
    >>> getattr(s, 'age')  # 获取age属性,但是属性不存在,报错:Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Student' object has no attribute 'age'
    
    >>> getattr(s, 'age', 20)  # 获取age属性,如果属性不存在,就返回默认值20:20



    查看全部
  • ????????

    如何使用这个多态???

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

    2019-03-12

  • python中的类的方法类比函数。

    只是定义好的,作用是相似的。

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

    2019-03-12

  • 初始化父类,用到:一定要用 super(Student, self).__init__(name, gender) 去初始化父类。

    如何写继承类

    查看全部
  • 初始化父类继承。

    查看全部
  • 定义和用法. reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。


    请编写一个函数calc_prod(lst),它接收一个list,返回一个函数,返回函数可以计算参数的乘积。

    • ?不会了怎么办

    • 先定义能计算乘积的函数,再将此函数返回。

      参考代码:

      def calc_prod(lst):
          def lazy_prod():
              def f(x, y):
                  return x * y
              return reduce(f, lst, 1)
          return lazy_prod
      f = calc_prod([1, 2, 3, 4])
      print f()

    返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数:

    def calc_sum(lst):
        return sum(lst)

    调用calc_sum()函数时,将立刻计算并得到结果:

    >>> calc_sum([1, 2, 3, 4])
    10

    但是,如果返回一个函数,就可以“延迟计算”:

    def calc_sum(lst):
        def lazy_sum():
            return sum(lst)
        return lazy_sum

    # 调用calc_sum()并没有计算出结果,而是返回函数:

    >>> f = calc_sum([1, 2, 3, 4])
    >>> f
    <function lazy_sum at 0x1037bfaa0>

    # 对返回的函数进行调用时,才计算出结果:

    >>> f()
    10

    由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。


    查看全部
  • ???????

    查看全部
  • Python内置的 sorted()函数可对list进行排序:

    >>>sorted([36, 5, 12, 9, 21])
    [5, 9, 12, 21, 36]

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

    因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0

    这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:

    >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]

    sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:

    >>> sorted(['bob', 'about', 'Zoo', 'Credit'])
    ['Credit', 'Zoo', 'about', 'bob']

    'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。


    查看全部
  • 对于实例绑定类的属性,实质是多添加了一个实例的属性,并没有对类的属性进行修改。

    可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    查看全部
  • 面对对象编程时需要注意,首先要对对象进行属性定义还有赋值。

    此处的是有个先对count赋值,再进行运算的。

    查看全部

举报

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

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