zoukankan      html  css  js  c++  java
  • 那些年被我坑过的Python——山外有山(第四章)

    装饰器:


    定义:

      本质是函数,(装饰其他函数)就是为其他函数添加附加功能
    原则:
      1.不能修改被装饰的函数的源代码
      2.不能修改被装饰的函数的调用方式

    优点:
      装饰器带来的最直观的好处:减少对函数的细化修改,批量增加新功能


    实现装饰器必备知识:
    1、函数即“变量”

      函数的原理与变量引用相似,都是将一个命名于内存对象进行映射
    2、高阶函数
      满足下列两个条件之一的则为高阶函数:
      a、把一个函数名当作实参传递给另一个函数(在不修改被装饰函数代码的情况下为它增加功能)
      b、一个函数返回值中包含另一个函数名(不修改函数的调用方式)
    3、嵌套函数
      具有局部变量的特性,即在函数内部继续使用def定义新的子函数;
    4、高阶函数 + 嵌套函数 => 装饰器

      最简单的装饰器示例:

    1 def auth(_func):
    2     def decorate(*args, **kwargs):
    3         <需要附加的功能>
    4         result = _func(*args, **kwargs)
    5         <需要附加的功能>
    6         return result
    7 
    8     return decorate
    View Code

    Python的内存回收机制:
      1、当内存对象没有变量引用时候,会在一段时间内将内存对象回收
      2、取消变量引用可以使用del关键词,实际上是实现了变量名与内存对象之间的映射关系

     


    生成器(generator):
      eg.( i**2 for i in range(10) )返回结果为一个生成器
      1、只有在调用的时候才会生成相应的数据
      2、只能记录当前的位置及数据,而且只能向后,不能向前
      3、获取下一个数据的方法是调用:__next__()方法

      迭代器  VS   可迭代对象(Iterator VS   Iterable)
      1、迭代器是指可以调用next()方法的对象
      2、迭代对象是指可以使用for ... in ...: 遍历的对象
      3、迭代对象可以通过iter()方法转换为迭代器
      4、迭代器一定是迭代对象
      5、但迭代对象不一定是迭代器,可以通过iter()转换

    匿名函数的使用:

      匿名函数,又称为:lambda 函数。这段代码显示如何使用 lambda 函数:

      一个返回语句是未使用过 lambda 函数,它总是返回一些东西。 lambda 函数可以包含 if 语句:

    f = lambda x: x > 10
    print(f(2))
    print(f(12))

    map函数中调用lambda:

      映射的定义是 map(函数,可迭代)。它适用于一个函数可重复每一个项目。我们可以用 map(),以与列表中的lambda函数:

      使用 lambda 函数任何地方,都可以使用正常的函数来代替。lambda 函数不是一个语句,它是一个表达式。lambda 函数不支持的语句块。

    filter函数中调用lambda:

      过滤器(函数,迭代器)创建一个新的列表的元素,函数返回True。示例:

      返回的列表将返回仅包含其中lambda表达式的元素 “lamba x: x % 2 == 0”  的值为:true.

    reduce 函数中调用lambda:

      reduce 函数, reduce(function, iterable) 适用于两个参数累积到可迭代的项目,由左到右。示例:

      在这种情况下,表达始终为:true,因此,它简单地概括了列表的元素。另一个例子:

     
    list = [10,6,7,5,2,1,8,5]
    s = reduce(lambda x,y: x if (x > y) else y, list)
    print(s)
     
    

    内置函数:

    1、abs:返回绝对值
    2、all: 遍历一个迭代器,如果都为空,或者每个迭代元素都会true,则返回ture,等价于:

    def all(iterable):
        for element in iterable:
            if not element:
                return False
        return True 


    3、any:与all函数作用相反,如果任何迭代的一个元素为ture,或者为空,则返回false

    4、ascii: 转成ascii码
    5、bin:转一个整数得到一个二进制的字符串
    6、bool:转换一个值,得到一个bool类型
    7、bytearray:返回一个字节数据
    8、bytes: 根据一个编码转换成字节形式
    9、callable: 回调函数,如果返回false,则代表回调失败,如果为true,它也仍然可能失败
    10、chr:返回一个整形数字的Unicode形式,比如97返回a
    11、classmethod:为函数返回一个类方法
    12、compile:编译一个资源进入一个代码里或一个AST对象
    13、complex:创建一个复数的表达式
    14、 delattr:移除一个对象的属性
    15、dict:创建一个词典结构(类似Map)
    16、dir:如果没有参数返回本文件的路径,如果有参数返回一个对象的属性列表
    17、divmod:两个整形数字做相除
    18、enumerate:返回一个枚举对象
    19、eval:执行一个表达式,或字符串作为运算
    20、exec:支持python代码的动态执行
    21、filter:在一个元组里面过滤出目标字符串
    22、float:字符串转成浮点类型
    23、format:格式化字符串
    24、frozenset:返回一个新的克隆对象
    25、getattr:获取对象的一个方法的结果,类似于x.foobar
    26、 globals: 返回当前全局的字典表
    27、hasattr:判断是否有某个属性值,返回true代表有
    28、hash:取一个对象的hash值
    29、help:调用系统内置的帮助系统
    30、hex:转换一个整形数字,为小写的十六进制
    31、id: 返回一个对象的唯一标识值
    32、input:从控制台读取数据
    33、int,转换字符串为int型
    34、isinstance:判断一个对象是否为该类的一个实例
    35、issubclass:判断一个类是否为另一个类的子类
    36、iter: 返回一个可迭代的对象
    37、len: 返回一个字符串的长度
    38、list:打印一个集合对象
    39、locals:更细并返回一个词典的本地标志表
    40、map:返回一个可迭代的map函数
    41、max:返回集合里面最大的一个或多个值
    42、memoryview:返回一个python对象的内部数据
    43、min:返回集合里面最小的一个或多个值
    44、next:返回集合里面的下一项数值
    45、object:返回一个新的对象,是所有的类的父类
    46、oct:返回一个整形为八进制类型
    47、open: 打开一个系统文件
    48、ord:得到一个字符串或unicode类型的ascii数值
    49、pow:返回的数字n次方值
    50、print:打印输出语句
    51、property:返回一个属性值
    51、range:产生一个数字序列
    52、repr:返回一个字符串可打印对象
    53、reversed:反转一个集合
    54、round:返回一个四舍五入的浮点数
    55、set:返回一个新的set对象
    56、setattr:设置一个新的属性值
    57、slice:返回一个集合的区间集合
    58、sorted:对一个集合进行排序
    59、staticmethod:声明返回一个静态方法
    60、str:将数字类型转换为字符串
    61、sum:对一个集合里面的值求和
    62、super:返回一个代理父类的对象
    63、tuple:返回一个不可变的元组
    64、type:返回一个对象的类型
    65、vars:返回对象的属性
    66、zip:返回组合一个对等的项
    67、__import__: 比import高级的导入方法


    python里面的内置常量 :


    1、False:bool类型的值
    2、True:bool类型的值
    3、None:对象的为null
    4、NotImplemented: 不是其他类型的实现
    5、Ellipsis:省略
    6、__debug__:debug选项
    7、quit,exit,copyright,license,credits

    其他小知识点:


    1、获取绝对路径:

    os.path.abspath()

    2、获取上级目录

    os.path.dirname()

    3、获取函数名:

    func.__name__

    或者

    getattr(func,__name__)

     

  • 相关阅读:
    python--迭代器与生成器
    python--内置函数
    python--递归、二分查找算法
    【转】Appium根据xpath获取控件实例随笔
    【转】Appium基于安卓的各种FindElement的控件定位方法实践
    Robot Framework + appium 启动手机浏览器的两个方法(1)
    文件夹添加右键DOS快捷入口
    MacOS10.9平台配置Appium+Java环境
    Windows平台配置Appium+Java环境
    java 字符串反转
  • 原文地址:https://www.cnblogs.com/tntxyz/p/5785564.html
Copyright © 2011-2022 走看看