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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 但是,如果返回一个函数,就可以“延迟计算”: 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 由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。
    查看全部
  • 请注意区分返回函数和返回值: def myabs(): return abs # 返回函数 def myabs2(x): return abs(x) # 返回函数调用的结果,返回值是一个数值
    查看全部
  • 返回函数 调用函数 f,我们会得到 f 返回的一个函数: >>> x = f() # 调用f() call f()... >>> x # 变量x是f()返回的函数: <function g at 0x1037bf320> >>> x() # x指向函数,因此可以调用 call g()... # 调用x()就是执行g()函数定义的代码
    查看全部
  • 在3.5版本中可以用type()查看s.__slots__的类型。显示结果:<class 'tuple'>
    查看全部
    0 采集 收起 来源:python中 __slots__

    2018-03-22

  • class Person(object): __slots__ = ('name', 'gender') def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): __slots__ = ('name','gender','score') def __init__(self,name,gender,score): self.name=name self.gender=gender self.score=score s = Student('Bob', 'male', 59) s.name = 'Tim' s.score = 99 print s.score print s.__slots__ 最后一行的功能是查看slots列表
    查看全部
    0 采集 收起 来源:python中 __slots__

    2016-01-24

  • s.upper s.lower map() reduce
    查看全部
  • math.sqrt
    查看全部
  • 变量名可以指向函数, 所以一个函数可以通过变量名传给另一个函数 另一个函数就是高阶函数
    查看全部
  • 姑且这么理解:Rational 类名可以随意换比如换成Ra随便改照样能实现功能,关键是__add__之类的特殊方法只要检测到有+符号就会自动将def __add__(self,r)中的r(也可以随便改如i)参数设置为接收另一个实例的参数。 主要难在求公约数上,写一个简单的求最大公约数的方法比较考验脑子。
    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。
    查看全部
  • 实例8: >>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:(x[1],x[0])) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] 实例9: >>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=operator.itemgetter(1,0)) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] 为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个
    查看全部
  • 实例4: 对第二个关键字排序 >>>L = [('b',6),('a',1),('c',3),('d',4)] >>>L.sort(key=lambda x:x[1]) >>>L >>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)] 实例5: 对第二个关键字排序 >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>import operator >>>L.sort(key=operator.itemgetter(1)) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例6:(DSU方法:Decorate-Sort-Undercorate) >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort >>>A.sort() >>>L = [s[2] for s in A] >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项 为比较关键字进行排序. 效率比较: cmp < DSU < key 通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当 多关键字比较排序: 实例7: >>>L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)] 我们看到,此时排序过的L是仅仅按照第二个关键字来排的, 如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法
    查看全部
  • python list排序的两种方法及实例讲解 对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Python实例: >>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> list.sort() >>> list [2, 3, 5, 8, 9] 方法2.用序列类型函数sorted(list)进行排序(从2.4开始) Python实例: >>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> sorted(list) [2, 3, 5, 8, 9] 两种方法的区别: sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。 list.sort() 不会返回对象,改变原有的list。 其他sort的实例: 实例1:正向排序 1 2 3 4 >>>L = [2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4] 实例2:反向排序 >>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1] 实例3:对第二个关键字排序 >>>L = [('b',6),('a',1),('c',3),('d',4)] >>>L.sort(lambda x,y:cmp(x[1],y[1])) >>>L >>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用
    查看全部
  • functools.partial就是帮助我们创建一个偏函数的。 functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
    查看全部
    0 采集 收起 来源:python中偏函数

    2016-01-23

举报

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

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