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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 这章函数内部的计算过程有点不理解,自己写起来就不知道该怎么“吩咐”它做事。我是真没想到字符串u1和u2还可以直接比较……
    查看全部
  • 这个reduce函数有一个点比较好用,比如可以用它来吧字符串串起来,例如这样 def f(x,y): return x+y print reduce(f,['Adam','Lisa','Bob']) 结果:AdamLisaBob 这条评论好赞。
    查看全部
  • 三种方法:1、s.capitalize():自动进行首字母大写、后面小写 2、s[0].upper s[1:].lower 3、s.title() 延伸:如果本身名字不规范怎么办,比如“jack”前面有空格
    查看全部
  • **kw是关键字参数,用于字典 iteritems()用于字典kw的遍历 setattr(self, k, v)就等价于self.k = v
    查看全部
  • 带参数的decorator需要三层嵌套,是因为: 最里一层,必然是一个参数列表为(*args,**kw)的wrapper,执行自身逻辑与运行目标函数,返回的是目标函数的执行结果; 倒数第二层,必然是一个参数列表为(f)的函数,用来接受目标函数,以供wrapper调用(闭包),并返回wrapper; 如果是无参数decorator,这时已经够了,python解释器会自动把@decorator转换成 f=decorator(f); 但如果是有参数decorator,还需要最后一层,因为还有一个decorator自身的参数要传递以供内部闭包使用。因此,最外一层就是decorator,参数列表为decorator自身需要的参数列表,返回的其实还是内部的wrapper。(因为外两层只为传递参数,并没有自身逻辑实现)
    查看全部
  • 这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。
    查看全部
  • 利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串: def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']) 结果:['test', 'str', 'END'] 注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下: a = ' 123' a.strip() 结果: '123'
    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • reduce()函数传入一个函数和一个list时,对list中的数据两两进行函数运算处理!
    查看全部
  • 返回函数不要引用任何循环变量,或者后续会发生变化的变量。 def count(): fs = [] for i in range(1, 4): def f(m = i): return m * m fs.append(f) return fs f1, f2, f3 = count() print f1(), f2(), f3() 方法:问题的产生是因为函数只在执行时才去获取外层参数i,若函数定义时可以获取到i,问题便可解决。而默认参数正好可以完成定义时获取i值且运行函数时无需参数输入的功能,所以在函数f()定义中改为f(m = i),函数f返回值改为m*m即可.(问题产生的原因分析得很清楚) 或在for 循环内用闭包#用匿名函数代替g()更简洁清楚 def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g r = f(i) fs.append(r) return fs f1, f2, f3 = count() print f1(), f2(), f3() def count(): fs = [] for i in range(1, 4): def f(i): return lambda : i*i fs.append(f(i)) return fs f1, f2, f3 = count() print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2018-02-12

  • s1[0].upper和s1[0].upper()居然是不一样的!
    查看全部
  • 由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i,当 f1 被调用时: >>> f1() 9 # 因为f1现在才计算i*i,但现在i的值已经变为3
    查看全部
    0 采集 收起 来源:python中闭包

    2018-03-22

  • 函数内部引用变量不可以是循环变量,则将循环变量算出的结果赋值给一个参数就好,但直接赋值给参数,直接输出count()结果是[1,4,9],二要求输出结果是值不是list,取元素即可
    查看全部
    0 采集 收起 来源:python中闭包

    2018-02-12

  • 1、匿名函数 lambda x: x * x 实际上就是: def f(x): return x * x 2、关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。 3、匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。 4、使用匿名函数,可以不必定义函数名,直接创建一个函数对象
    查看全部
  • 函数:s.title()能返回书名格式,即只有首字符大写的格式!
    查看全部

举报

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

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