1.内置函数的查找
- 内置函数都定义在一个叫builtins模块中,此模块默认在python环境启动的时候就自动导入,可以直接使用这些函数,不用import 模块名。
- globals():列出当前环境下所有的全局变量
- 查看builtins模块中定义的函数:
- abs():绝对值函数。注意:内置函数是可以被赋值给其他变量的,同样也可以将其他对象赋值给内置函数,这时就完全变了。所以,内置函数不是Python关键字,要注意对它们的保护,不要使用和内置函数重名的变量名,这会让代码混乱,容易发生难以排查的错误
- all():接收一个可迭代对象,如果对象里的所有元素的bool运算值都是True,那么返回True,否则False。相当是与的作用
- any:接收一个可迭代对象,如果迭代对象里有一个元素的bool运算值是True,那么返回True,否则False;与all()是一对兄弟。相当于或的作用
- ascii():调用对象的__repr__()方法,获得该方法的返回值。__repr__()方法是由对象所属类型实现的方法,不可以简单地理解为print或echo
- bin()、oct()、hex():三个函数是将十进制数分别转换为2/8/16进制
- bool():测试一个对象或表达式的执行结果是True还是False。实际上bool是一个类,不是函数,bool()的返回值是一个布尔类型的实例。builtins中的很多函数,其实都是类,比如bytes(),str()等等。只是因为称呼的习惯,我们叫它函数,严格意义上说,这是不对的。
- bytearray:实例化一个bytearray类型的对象。参数可以是字符串、整数或者可迭代对象。bytearray是Python内置的一种可变的序列数据类型,具有大多数bytes类型同样的方法。
- 当参数是字符串的时候,需要指定编码类型。
- 当参数是整数时,会创建以该整数为长度,包含同样个数空的bytes对象的数组。
- 当参数是个可迭代的对象时,该对象必须是一个取值范围0 <= x < 256的整数序列。
- bytes():将对象转换成字节类型。例如,s = ‘张三’;m = bytes(s,encoding=‘utf-8’)
- str():将对象转换成字符串类型,同样也可以指定编码方式。例如,str(bytes对象,encoding=‘utf-8’)。bytes和str之间的互相转换,更多使用的是encode()和decode()方法。
- callable():判断对象是否可以被调用。如果某个对象具有__call__方法,那它就能被调用。
- chr():返回某个十进制数对应的ASCII字符,例如:chr(99) = ‘c’。它可以配合random.randint(65,91)随机方法,生成随机字符,用于生产随机验证码。
- ord():与chr()相反,返回某个ASCII字符对应的十进制数,例如,ord(‘A’) = 65
- classmethod()、staticmethod()和property():在类中使用的方法,用于生成类的方法、静态方法和属性的函数。
- compile():将字符串编译成Python能识别或执行的代码,也可以将文件读成字符串再编译。
- complex():通过数字或字符串生成复数类型对象,使用字符串的时候,+号左右不能有空白。
- delattr()、setattr()、getattr()、hasattr():类机制中,分别用来删除、设置、获取和判断属性。
- dir():显示对象所有的属性和方法。
- int()、float()、list()、dict()、set()、tuple():与bool()、str()、bytes()一样,它们都是实例化对应数据类型的类。
- divmod():除法,同时返回商和余数的元组。
- enumerate():在迭代对象的时候,额外提供一个序列号的输出。**注意:enumerate(li,1)中的1表示从1开始序号,默认从0开始。注意,第二个参数才是你想要的序号开始,不是第一个参数。**通常用于对那些无法提供序号的迭代对象使用。但对于字典,依然是无序的。
- eval():将字符串直接解读并执行。例如:s = “6*8”,s是一个字符串,d = eval(s), d的结果是48。
- exec():执行字符串或compile方法编译过的字符串,没有返回值。
- format():执行format(),其实就是调用该对象所属类的__format__方法,类似print功能。
- frozenset():返回一个不能增加和修改的集合类型对象。
- hash:为不可变对象(整数、字符串、元组等),例如字符串生成哈希值的函数。
- help():返回对象的帮助文档
- id():返回对象的内存地址,常用来查看变量引用的变化,对象是否相同。
- input():接收用户输入,返回一个输入的字符串。
- isinstance():判断一个对象是否是某个类的实例,比type()方法适用面更广。
- issubclass():issubclass(a,b),判断a是否是b的子类。
- iter():制造一个迭代器,使其具备next()能力。
- len():返回对象的长度
- locals():返回当前可用的局部变量
- max()/min():返回给定集合里的最大或者最小的元素,可以指定排序的方法
- memoryview(obj):返回obj的内存视图对象。obj只能是bytes或bytesarray类型
- next():通过调用迭代器的在__next__()方法,获取下一个元素
- object():该方法不接收任何参数,返回一个没有任何功能的对象。object是Python所有类的基类。
- open():打开文件的方法。在Python2里,还有一个file()方法,Python3中被废弃了。
- pow():幂函数 pow(3, 2) 结果是9
- repr():调用对象所属类的__repr__方法,与print功能类似。
- reversed():反转,逆序对象。
- round():四舍五入
- slice():返回一个切片类型的对象。slice是一个类,一种Python的数据类型。Python将对列表等序列数据类型的切片功能单独拿出来设计了一个slice类,可在某些场合下使用。
- sum():求和
- super():调用父类。面向对象中类的机制相关。
- type():显示对象所属的数据类型。
- vars():与dir()方法类似,不过dir()方法返回的是key,vars()方法返回key的同时还把value一起打印了。
- map():映射函数。使用指定的函数,处理可迭代对象,并将结果保存在一个map对象中,本质上和大数据的mapreduce中的map差不多。使用格式:obj = map(func, iterable),func是某个函数名,iterable是一个可迭代对象。
- filter():过滤器,用法和map类似。在函数中设定过滤的条件,逐一循环对象中的元素,将返回值为True时的元素留下(注意,不是留下返回值!),形成一个filter类型的迭代器。
- zip():组合对象,将对象逐一配对。
- 如果对象的长度不一致,多余的会被抛弃,以最短的为基础!
- sorted():排序方法,有key和reverse两个重要参数。
- 基础用法: 直接对序列进行排序
- 指定排序的关键字:**关键字必须是一个可调用的对象。**例如下面的例子,规则是谁的绝对值大,谁就排在后面。
- 指定按反序排列:下面的例子,首先按忽略大小写的字母顺序排序,然后倒序排列。
- __import__(name):这个方法为我们提供了一种通过字符串反射包、库或模块的手段。其中的name是你想要导入的库的名称的字符串。下面的例子中,利用字符串“time”,导入了实际的time库,并赋值给t变量。这个变量实际就相当于import time的结果。然后使用t.time()进行调用。在某些场景下,这个方法非常有用。但是很多时候,它也存在安全问题,Python官方不建议经常使用它。