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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 尝试一下这个问题。
    查看全部
  • 值得关注,用实例修改类属性,和用类本身修改,也就是在类里面直接加行加减。
    查看全部
  • 带特定参数的装饰器:多了一层真正执行装饰的子函数(xxx(f)),最内层还是返回被装饰的默认函数(带可任意参数),外层依次返回各级所定义函数名(洋葱,一层套一层)

    闭包:函数内套子函数,子函数用了外函数的参数(默认的或定义的)。

    外层函数不能调用子函数内的参数,不论在子函数定义前还是构建后。

    查看全部
  • 装饰器(decorator)是高阶函数的一种类型,其参数为一个默认函数(f),return一个添加了装饰器中新功能的新函数。

    在装饰器函数体中,一般再定义一个新函数(参数可任意),在其中进行新功能的构建并返回默认参数函数(带可任意参数),最后在装饰器函数中返回新函数(名):

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

    调用时,在需要加装饰的函数定义句段上面一行添加“@decorator" 即可。

    查看全部
  • 在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问

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

    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。举例如下

    因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量


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

    2018-10-01

  • 如果类的属性是用关键字参数,不能直接用调用

    self.k = v 来赋值,因为这里的k就是一个字符串而已。 可以用另外一种setatrr的方式。

    setattr(self,k,v)

    查看全部
  • 顾名思义,__slots__是指一个类允许的属性列表:

    class Student(object):
        __slots__ = ('name', 'gender', 'score')

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

    子类继承了父类的属性类型后,还可以通过__slots__继续修改

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

    2018-10-01

  • @property的实现比较复杂,我们先考察如何使用。把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值

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

    2018-10-01

  • 返回函数只能引用不变的量,不能引用任何循环变量,或者后续(自动)会发生变化的变量。

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

    2018-10-01

  • 去掉lst不会报错是因为lst本来就是calc_prod传入的参数,在整个函数内本来就是可以调用的

    返回函数是在完整函数基础上的变化

    查看全部
  • filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。如,删除 None 或者空字符串

    s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

    1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')

    2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

    查看全部
  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    查看全部
  • 高阶函数可以结合数学知识分析

    查看全部
  • map()函数不改变原有的 list,而是返回一个新的 list

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

    由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。

    查看全部
  • 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法

    例如,求(319,377):

    ∵ 319÷377=0(余319)

    ∴(319,377)=(377,319);

    ∵ 377÷319=1(余58)

    ∴(377,319)=(319,58);

    ∵ 319÷58=5(余29)

    ∴ (319,58)=(58,29);

    ∵ 58÷29=2(余0)

    ∴ (58,29)= 29;

    ∴ (319,377)=29。

    可以写成右边的格式。


    查看全部

举报

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

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