1.4内置函数Python的一些内置函数在前面的章节已经有一些介绍了。这里再统一归纳总结一下1.4.1 len()len函数返回变量的长度。变量可以是很多种比如列表、字典、集合或者自己定义的类。所以我们自己定义的类只要有len()函数就可以使用内置函数len得到自定义类的长度。比如下面的输出的类A的结果就是10。1.4.2 min(args1,args2,args3,…)min返回输入参数中的最小值。Python比较字符串大小时根据的是ord函数得到的编码值。基于它的排序函数sort可以很容易为数字和英文字母排序因为它们在编码表中就是顺序排列的。对于中文的排序就复杂了。汉字的编码由好几种方法比如GB2312、GBK、UTF-8等。不同的编码方法会得到不同的大小结果因为同一个汉字在编码表中的位置是不同的。因此如果要使用汉字排序、判断大小要清楚使用的编码格式才可以。一般都是使用自定义的处理函数否则结果难以预期。网络上有很多的处理中文排序的文章读者可以自行去查找合适的方法。当然输入的参数要是同一种类型的才可以。否则会返回TypeError异常。那么两个列表是不是能够比较呢可以的只要输入的类型支持””运算就可以了。1.4.3 maxmax与min类似。只不过max是返回最大的一个数值而min是返回最小的。1.4.4 range([start], stop[, step])range产生一个序列常用于初始化或者循环中。参数说明:参数名称作用start起始数值默认是0。stop结束数值。必须输入。不能为空step步长间隔。1.4.5迭代器iter()迭代器是访问元素集合的一种方式。迭代器对象从集合的第一个元素开始访问直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器提供了一个统一的访问集合的接口。只要是实现了__iter__()或__getitem__()方法的对象就可以使用迭代器进行访问。序列字符串、列表、元组非序列字典、集合、文件自定义类用户自定义的类实现了__iter__()或__getitem__()方法的对象1.4.6 map(function, iterable, …)map的功能很强大主要就是把iterable中的每一个元素带入function中进行处理并且返回处理后的iterable类型。map和数学里面的映射很类似就是把一些元素映射成另外的数值。比如要完成所有的首字母大写同时其它字母要小写def cap(word): new_wordword[0:1].upper()word[1:].lower() return new_word word[heLLo,WORLD,cool] print(list(map(cap,[heLLo,WORLD,cool])))结果说明[‘Hello’, ‘World’, ‘Cool’]注意map返回的是一个object。注意map返回的是一个map对象而不是输入的参数类型。因此需要做一个显式的转换。比如转换为列表类型等才能打印输出内容或者自己使用for循环调用map对象的next()方法去打印输出。1.4.7 enumerate(sequence,[start0])enumerate内置函数与数学和Python Enum类的含有并不一样。enumerate内置函数的意义在于生成传入参数的索引值。在遍历列表、字典等数据类型的时候可以方便的使用索引值。这是enumerate 的典型应用场景。Python也有和数学定义一致的枚举类。需要使用import 引入enum模块定义并继承Enum的类。Enum和enumerate内置函数是完全不同的。Enum的主要作用就是定义有穷序列成员集合这些成员有名称和数值两个属性。这些成员的名称不能重名也就是说不能定义两个‘星期日’在一个Enum的类中尽管我们都非常期待有多个星期日。Enum中的成员只可以判断是否相等但是不能比较大小。Enum中的成员还可以有别名就是成员的名称不同但是数值相同。也可以使用unique 强制不能出现成员有相同的数值就是不能有别名。from enum import Enum class pets(Enum): dog 1 cat 2 for item in pets: print(item) from enum import Enum class pets(Enum): dog 1 dog 2 from enum import Enum class pets(Enum): dog_alias 1 dog 1 cat 2 for item in pets: print(item) from enum import Enum class pets(Enum): dog_alias 1 dog 1 cat 2 print(pets.dog pets.cat) print(pets.dog pets.dog_alias) from enum import Enum class pets(Enum): dog_alias 1 dog 1 cat 2 print(pets.dog pets.cat) from enum import Enum class pets(Enum): unique dog_alias 1 dog 1 cat 21.4.8其他Python还有其他的内置函数比如int、float、str等。详细的说明见下表。函数名称作用类型bool(arg)根据传入的参数的逻辑值创建一个新的布尔值。0,None,空字符串、空列表等都会被认为是False其他的情况是True。类型转换int(arg)根据传入的参数创建一个新的整数类型转换float(arg)根据传入的参数创建一个新的浮点数类型转换complex(arg1,arg2)根据传入参数创建一个新的复数类型转换str(arg)根据传入参数创建一个字符串。字符串是不可修改的。类型转换bytearray(arg)根据传入的参数创建一个新的字节数组类型转换bytes(arg)根据传入的参数创建一个新的不可变字节数组类型转换memoryview查看参数指定的内存区域。传入的参数要支持缓冲区协议内置的类型是bytes和bytearray。类型转换ord(arg)返回Unicode字符对应的整数类型转换chr(arg)返回整数所对应的Unicode字符类型转换bin(arg)将整数转换成2进制字符串类型转换oct(arg)将整数转换成8进制字符串类型转换hex(arg)将整数转换成16进制字符串类型转换tuple(arg)根据传入的参数创建一个新的元组类型转换list(arg)根据传入的参数创建一个新的列表类型转换dict(arg)根据传入的参数创建一个新的字典类型转换set(arg)根据传入的参数创建一个新的集合类型转换frozenset(arg)根据传入的参数创建一个新的不可变集合类型转换iter()根据传入的参数创建一个新的可迭代对象类型转换slice()根据传入的参数创建一个新的切片对象类型转换super()根据传入的参数创建一个新的子类和父类关系的代理对象类型转换object()创建一个新的object对象类型转换abs()求输入数值的绝对值数学运算divmod()返回两个数值的商和余数数学运算pow()取两个值的幂运算值或者与第三个参数的余数。比如pow(2,3)的返回值是8。而pow(2,3,4)的值是0。数学运算round()对浮点数进行四舍五入求值数学运算sum(seq)对元素类型是数值的可迭代对象中的每个元素求和数学运算all判断可迭代对象的每个元素是否都为True值。0None,[]等都是False。序列操作any判断可迭代对象的元素是否有为True值的元素序列操作filter(func,seq)使用指定函数过滤可迭代对象的元素并返回一个可迭代对象。序列操作next返回可迭代对象中的下一个元素值序列操作reversed反转序列生成新的可迭代对象序列操作sorted对可迭代对象进行排序返回一个新的列表序列操作zip聚合传入的每个迭代器中相同位置的元素返回一个新的元组类型迭代器。zip的作用非常类似线性代数的矩阵转置。序列操作help(arg)返回对象的帮助信息。比如help(int)对象操作dir(arg)返回对象或者当前作用域内的属性列表。尝试输入print(dir(1))。很有趣的结果。对象操作id(arg)返回对象的唯一标识符。对于自定义的变量返回的就是内存地址。但是有些内置的对象是固定的数值。对象操作hash(arg)返回对象的哈希值对象操作type(arg)返回对象的类型或者根据传入的参数创建一个新的类型对象操作ascii(arg)返回对象的可打印表字符串表现方式对象操作format格式化显示对象操作vars返回当前作用域内的局部变量和其值组成的字典或者返回对象的属性列表对象操作isinstance判断对象是否是类或者类型元组中任意类元素的实例对象操作issubclass判断类是否是另外一个类或者类型元组中任意类元素的子类对象操作hasattr检查对象是否含有属性对象操作getattr获取对象的属性值对象操作setattr设置对象的属性值对象操作delattr删除对象的属性对象操作callable检测对象是否可被调用对象操作globals返回当前作用域内的全局变量和其值组成的字典变量操作locals返回当前作用域内的局部变量和其值组成的字典变量操作print向标准输出对象打印输出交互操作input读取用户输入值交互操作open使用指定的模式和编码打开文件返回文件读写对象文件操作compile将字符串编译为代码或者AST对象使之能够通过exec语句来执行或者eval进行求值编译执行eval执行动态表达式求值编译执行exec执行动态语句块编译执行repr返回一个对象的字符串表现形式(给解释器)编译执行property标示属性的装饰器装饰器classmethod标示方法为类方法的装饰器装饰器staticmethod标示方法为静态方法的装饰器装饰器注1字符串声明后是不能够修改的。如果要修改可以使用将字符串定义为字节数组bytearray。注2byte声明后也是不能修改的。如果要修改见注1。注3memoryview其实就是直接访问一块内存区域。这个区域的存放的类型是字节或者字节数组。memoryview函数可以让程序员直接操作这片内存区域。bytes使用的内存区域是不可修改的bytearray使用的内存区域是可以修改的。