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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 1:匿名函数的普遍使用,2:sorted函数的参数:cmp(compare)参数是确定比较规则的函数,key参数是提取元素比较的关键字的函数,reverse参数是确定按上升还是下降的顺序排列。
    查看全部
    0 采集 收起 来源:python中偏函数

    2017-02-21

  • 原函数f经过装饰器装修后,属性(函数名,参数名)发生了变化,会导致依赖函数名的代码失效,可以通过functools模块中的wraps函数将原函数f的一些属性复制到新函数中。
    查看全部
  • 引用模块: import 包名.模块名 调用模块中的函数:如f() 即 包名.模块名.函数名(参数列表) 区分包和普通目录: 包下面必须有_init_.py文件,每一层又要有,即使是空包也要有
    查看全部
  • 当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换: >>> int('12345') 12345 但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做 N 进制的转换: >>> int('12345', base=8) 5349 >>> int('12345', 16) 74565 假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去: def int2(x, base=2): return int(x, base) 这样,我们转换二进制就非常方便了: >>> int2('1000000') 64 >>> int2('1010101') 85 functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2: >>> import functools >>> int2 = functools.partial(int, base=2) >>> int2('1000000') 64 >>> int2('1010101') 85 所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。 在第7节中,我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数: sorted_ignore_case(iterable) 要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。 import functools sorted_ignore_case = functools.partial(sorted, cmp=lambda s1, s2: cmp(s1.upper(), s2.upper())) print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])
    查看全部
    0 采集 收起 来源:python中偏函数

    2018-03-22

  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
    查看全部
  • lambda x: x * x 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式(此处为x*x)的结果。
    查看全部
  • *args:非关键字参数,用于元组,*kw:关键字参数,用于字典。decorator就是讲原来的函数f变成一个新的函数f
    查看全部
  • def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1<u2: return -1 elif u1>u2: return 1 else: return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case) 我感觉例子中的cmp_ignore_case函数像是重写了sorted函数中默认的排序函数
    查看全部
  • 先定义能计算乘积的函数,再将此函数返回。 参考代码: 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()
    查看全部
  • 例子中:fs.append(f)返回的是函数,所以fs里面还是函数,赋值f1,f2,f3时也还是函数,只有真正求值f1的时候才返回值。这样子的话,就可以从最根本解决起,那就是fs.append(f()),此时返回的是数值。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-02-20

  • 不能同时写__init__和__call__的原因是__init__方法没有接到参数 要这样写: class Fib(object): def __init__(self): pass def __call__(self,num): L=[0,1] for i in range(num-2) : L.append(L[-1]+L[-2]) return L
    查看全部
    0 采集 收起 来源:python中 __call__

    2017-02-20

  • 导入模块math后为何引用sqrt时还要加math: math是包含各种函数或方法的模块,若前面是import math, 引用模块中的函数就要用格式math.sqrt()。 若想省略前面的模块名,在前面导入时用from math import *
    查看全部
  • 能接收函数做参数的函数称之为高级函数 def add(x,y,f) #定义一个add函数,参数包括两个数值x,y。f先不理。 return f(x)+f(y) #返回一个表达式,f可以看出是个函数 add(-5,8,abs) #f = abs,相当于自定义add函数中的f有着abs()函数的功能。 13 #输出-5的绝对值和8之和
    查看全部
  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-02-19

  • __slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的。除非在子类中也定义__slots__,就像答案中一样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-02-19

举报

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

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