Day-07 python进阶

lambda 表达式
  • 无名或匿名函数对象
  • lambda a,b:a+b
  • f = lambda a,b,c:a+b+c
    print f(1,2,3)
递归
  • 取代循环的一种方法
  • 阶乘的计算:
  • 例子:
    def fac(n):
    if(n==1):
    return 1
    else:
    return n*fac(n-1)
闭包
  • 函数的嵌套,函数在内部被返回。
  • 内部函数调用外部作用域的变量,则这个函数就是闭包
  • def make_power(x):
    def fn(arg):
    return arg **x
    return fn
    f2 = make_power(2)
    调用:f2(100) #10000
装饰器 decorator
  • 一个函数包装另一个函数或类
  • 不改变函数名的情况下,改变被包装函数(对象)的行为
  • @修饰函数名
  • 无参数:@修饰函数名
  • 被修饰函数有参数:*args, **args的使用
  • 修饰函数有参数:@deco(“argslist”)
函数的属性
  • 函数式一个类 ,所有函数都有自己的属性
  • name,函数名
  • doc,函数内部的第一行注释
模块 module
  • 别人写好,供别人使用
  • 分类,内置模块,标准库,第三方模块,自己编写的模块
  • 模块的导入,import statement
  • import math as ma; import sys, os
  • 查看模块内容,help(obj)模块的属性及内容,dir(obj)模块的属性字符串输出
  • 模块的查找顺行,1,搜索内置模块,sys.builtin_module_names,2,sys.path提供的命令。3,搜索程序运行时的路径(当前路径)
  • 模块的属性
    __name__属性:
    __doc__属性:
    __all__属性:
    __file__属性:
  • 模块的隐藏属性:模块中以"_“或”“开头,不以”"结尾的属性,from import *不能导入到其他模块。
包 package
  • 模块的分组管理的方法
  • 相近功能的模块进行封装管理
  • from 包名.子包名.模块名 import *** as **
  • 包的加载路径与模块的加载类似
面向对象编程
  • 思想:一切皆对象
  • 两个概念:对象,类
  • 类的创建语法:class 类名(继承列表):
  • 内部包含的内容为:类文档字符串,实例方法定义,类变量定义,类方法定义,静态方法定义
  • class定义得到的类也是对象,是原类的对象
  • init(self,参数list),通过self.age,self.name定义实例成员
  • 实例方法:
    def get_color(self):
    \t return self.color
  • 实例方法的调用:dog1.get_color()或者Dog.get_color(dog1)
  • 构造方法:def init(self[,形式参数列表]),初始化实例变量
  • 析构方法:del(self): pass,销毁对象时被自动调用,一般不使用,由垃圾回收机制回收对象
  • 内置实例属性:__dict__属性,属性的字典输出;__class__属性,得到类;__doc__属性,得到注释;__main__属性,模块的名称
  • 类变量,属于类,不属于对象(实例);类直接调用;类实例直接访问;类实例通过__class__属性间接访问
  • 类变量的书写:不通过self定义,直接写到类当中。
  • 类方法:@classmethod(装饰器的语法)
  • 类方法与实例方法之间的区别:类方法可以访问类变量,不可访问实例变量;实例方法可以访问类变量,也可访问实例变量;类方法可以用实例来调用,也可以用类调用,实例方法在调用时必须传入实例
  • 静态方法:@staticmethod
  • 类实例和对象实例都可以调用调用静态方法
  • 静态方法不能访问类变量和实例变量
  • 实例方法,类方法,静态方法总结:1,不想访问类变量和实例变量,用静态方法,2,指向访问类内变量,不想访问实例属性用类方法,3,既想访问类内变量,也想访问实例变量用实例方法。
  • 特性属性:@property用来模拟一个属性,类似与getter与setter功能;有点像运算符重载的感觉
  • 类的__slots__属性,限定一个类创建的实例只能有这些实例属性。
  • 对象的属性管理:getattr(obj,name);hasattr(obj,name);setattr(obj,name,value);delattr(obj,name)
  • 用于类的函数:isinstance(obj,类型),判断类是否为某个类型;id(obj),返回对象的标识
异常
  • try:
    \t statement
    except:
    \t errordeal statement1 as 变量1
    except:
    \t errordeal statement2

    except:
    \t errordeal statement others
    else:
    \t未发生异常statement
    finally:
    \t最终语句
函数的重载
  • 运算符重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值