为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.17
571人评价 查看评价
9.6 内容实用
9.0 简洁易懂
8.9 逻辑清晰
  • capitalize() 首字母大写,其余全部小写
    upper() 全转换成大写
    lower() 全转换成小写
    title()  标题首字大写,如"i love python".title()  "I love python"

  • 装饰器学习:

    http://blog.csdn.net/xiangxianghehe/article/details/77170585###;
    http://python.jobbole.com/82344/

  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。 如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
  • * 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问;**用来处理传递任意个有名字的参数,这些参数用dict来访问。
  • 定义decorator def log(f): #定义装饰器高阶函数,以要装饰的函数f作为参数 def fn(x): #内部相当于重构要装饰的函数f,重命名为fn print 'call ' + f.__name__ + '()...' #加特技print return f(x) #为了不重写原来的函数f的代码,所以用return f(x)代替原来的代码。 return fn 将被装饰过的新的函数fn返
  • python3 sorted取消了对cmp的支持。 python3 帮助文档: sorted(iterable,key=None,reverse=False) key接受一个函数,这个函数只接受一个元素,默认为None reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False 着重介绍key的作用原理: key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None 。
  • calc_prod返回了一个不带参数的函数lazy_prod(), lazy_prod()这个函数返回了一个经过reduce()计算后的结果,就是最终计算出来的值。 f = calc_prod([1, 2, 3, 4])的执行结果是函数lazy_prod的引用,也就是所f就是calc_prod的返回值,是一个函数。 最后f()才真正调用了上一步返回的函数,执行了reduce并返回最后的结果。 这里其实用到的就是闭包,函数内部的函数可以访问外部函数的局部变量,包括参数。 并且返回一个新的函数。
  • Python设计语言中的pass语句是一种占位语句,不做任何作用,主要用来保持代码格式的完整性。
  • 带参数的decorator需要三层嵌套,是因为: 最里一层,必然是一个参数列表为(*args,**kw)的wrapper,执行自身逻辑与运行目标函数,返回的是目标函数的执行结果; 倒数第二层,必然是一个参数列表为(f)的函数,用来接受目标函数,以供wrapper调用(闭包),并返回wrapper; 如果是无参数decorator,这时已经够了,python解释器会自动把@decorator转换成 f=decorator(f); 但如果是有参数decorator,还需要最后一层,因为还有一个decorator自身的参数要传递以供内部闭包使用。因此,最外一层就是decorator,参数列表为decorator自身需要的参数列表,返回的其实还是内部的wrapper。(因为外两层只为传递参数,并没有自身逻辑实现)
  • 区分包和普通目录:包下面必须有一__init.__.py文件,即使它是个空文件
  • 函数和方法区别:,函数调用不需要传入 self,但是方法调用需要传入 self。
  • 概念:模块和包。 以py后缀结尾的文件(如test.py)称为模块; 包含这些py文件的文件夹称为包。(注意:区分包和普通目录,包每层下面都必须有_init_.py文件,即使是空的也可以) 应用:模块>解决代码多,难以维护的问题,好处是同一个名字变量互不影响;包>解决py模块的名称相同的冲突 调用:import a.py/import test.a.py(其中test是包名称,a是模块名称)
  • 关于这一节,最大的理解问题就是f1,f2,f3 = count()的意思,这跟java或者c++中的 int i,j = 4的意思是不一样的. 当q,t = [1,2],意思是把一个list中的1赋值给q,2赋值给t 而m,n = 4,不是像java中把4赋值给m,n.这个时候,错误提示:TypeError: 'int' object is not iterable,说int类型,也就是4不可遍历.这样,就可以理解f1,f2,f3 = count()的意思了. count()中返回的是一个list:fs. f1,f2,f3分别是这个list中的3个值.这3个值都是f函数 那么关于为什么f1,f2,f3都是9. 引用原文:" 原因就是当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3。由于f1、f2、f3并没有被调用,所以,此时他们并未计算 i*i,当 f1 被调用时: "
    查看代码快照
  • >>> f() call f()... #只是一个print输出,函数执行结果之一 <function g at 0x7f9a1851e5f0> #这才是返回结果 x = f() ##这是把f()的返回结果(返回结果只有一个函数)赋值给x,并执行一次f()。
    查看代码快照
  • 任务 请创建包含两个 Person 类的实例的 list,并给两个实例的 name 赋值,然后按照 name 进行排序。 方法1:L2 = sorted(L1,key=lambda x:x.name) 方法2:L2=sorted(L1,lambda p1,p2:cmp(p1.name,p2.name)) 方法3: def cmp_ignore_case1(u1, u2): if u1.name < u2.name: return -1 if u1.name > u2.name: return 1 return 0 L2 = sorted(L1,cmp_ignore_case1)
    查看代码快照

举报

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

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