16.python内置函数
内置函数目录及顺序:
作用域相关:locals(),globals()
迭代器相关:next(),iter(),range()
其他:dir(),callable(),help(),open(),id(),hash(),input(),print() ,exec() ,eval(),compile()
数据类型相关:bool(),int(),float(),complex()
进制转换相关:bin(),oct(),hex()
数据处理相关:abs(),divmod(),round(),pow(),sum(),min(),max(),reverse(),reversed(),slice()
字符串相关:format(),bytes(),bytearray(),ord(),chr(),ascii(),repr(),forzenset()
数据结构相关:all(),any(),zip(),filter(),map(),map(),sort(),sorted()
面向对象相关:property,setter,deleter,isinstance(),issubclass()
作用域相关:
locals()
返回本地作用域中的所有名字
globals()
返回全局作用域中的所有名字
迭代器相关:
next(迭代器)
迭代器.__next__()=next(迭代器)
__next__是属于迭代器的初始化方法,next()是内置方法,两者的作用相同,在使用next()方法时实际发挥作用的还是__next__函数
iter(可迭代的对象)
可迭代的对象.__iter__()=iter(可迭代的对象)
两者功能相同,返回一个迭代器
range()
range的结果是可迭代的,但是它不是一个生成器
其他:
dir(变量)
返回一个变量所拥有的其他所有方法
callable(变量)
查看变量是否是函数名,返回True 或False(经常被用来检验变量是否是函数名)
help(数据类型或变量)
查看打印参数中数据类型或变量的所有使用方法
open()
打开一个文件
id(变量)
返回变量的内存地址
hash(数据)
hash一个数据,如果数据是不可哈希的话报错,可哈希的话返回hash值,对于相同可hash数据的hash值在一次程序的执行过程中总是不变的
拓展:字典的寻址方式
字典中根据key来查找value的速度特别快,原因是字典将value的值存在内存为hash(key)的地址中,在查找value时,首先得到hash(key)的值,然后访问内存为该值的地址,就可以取到数据
input(提示)
打印提示内容,让用户输入,返回用户在键盘输入的内容
print()
打印内容
默认参数end='/n',指定输出的结果,每条语句打印完成后,会默认自动换行
默认参数sep='' 能够指定暑促多个值之间的分隔符
默认参数file: 之所以能够将指定内容显示在屏幕上,就是把屏幕当作成一个文件,如果把默认文件改成目录中的文件名并用open将文件打开,就会将指定内容打印到文件中
默认参数flushflush=True 立即把内容输出到流文件,不做缓存
exec(),eval()和compile()
print(exec('1+2+3+4')) print(eval('1+2+3+4'))
执行结果:
None
10
这两行代码没有区别,1+2+3+4都会执行,但是exec没有返回值,eval将结果返回打印出来
都可以执行 字符串类型的代码,区别是eval有返回值,exec没有返回值
eval适合处理有结果的简单运算,只能用在你明确知道要执行的代码时什么,可以将代码变得简单
exec适合处理简单流程控制
compile 将数据类型的代码编译,代码对象能够通过exec语句来执行或者evel()进行求值
如果代码长度较大且复用性较大,可以使用compile函数先将函数编译一次,然后使用exec,或者eval对编译后的结果执行,这样函数就只用编译一次,不用每次都编译
数据类型相关:
bool()
用来返回布尔型数据,如: True ,False
int()
用来返回整型数据
float()
用来返回浮点数(有限循环小数,无限循环小数)
complex()
用来返回一个复数,即实数+虚数(虚数在python中用j表示)
进制转换相关:
bin(数据)
将数据转换成十进制
oct(数据)
将数据转换成八进制
hex(数据)
将数据转换成十六进制
数据运算相关:
abs(数据)
求数据的绝对值
divmod(参数1,参数2)
除余方法:返回一个元组(两个参数相除的结果,两个参数取余)
a=divmod(18,5) print(a)
执行结果:
(3, 3)
round(参数,位数)
将参数保留到小数点后指定的位数
pow(参数1,参数2,参数3)
如果给两个参数是求幂运算,返回参数1的参数2次方
如果给三个参数,返回前两个参数求出的幂值与参数3的模,就是幂值除以参数3的余数
a=pow(2,4) b=pow(2,4,3)
print(a)
print(b)
执行结果:
16 #2的4次方
1 #2的4次方再除以3的余数
sum(可迭代的数据类型,start)
返回参数1中所有元素的和,如果两个参数,就从strat的值开始依次求和
a=sum([1,2,3,4,5]) print(a) b=sum([1,2,3,4,5],2) #第二给我参数2表示从2开始加,即2+1+2+3+4+5 print(b)
执行结果:
15
17
min(可迭代对象或多个分开参数)
返回最小值,参数可以是一个可爹地啊对象;也可以是多个数据参数
a=min([2,3,6,8,0]) b=min(2,3,6,8,0) print(a,b)
执行结果:
0 0
也可以写成min(可迭代对象,key=函数名),根据函数对数据进行操作,根据操作后最小的数据返回原来的值。
max()
与min的使用方法相同,区别是最后返回最大值
reverse()
将列表中的数据反转,原来的数据丢失,即将原来的列表删除,冲印创建一个同名列表,将元素写入该列表
l=[1,2,3,4] l.reverse() print(l)
执行结果:
[4, 3, 2, 1]
reversed()
产生一个新的迭代器。其中的数据就是原列表中的元素反转
l=[1,2,3,4] l2=reversed(l) print(l2)
执行结果:
<list_reverseiterator object at 0x000002158C5EB588>
slice()
切片函数,其作用与[]切片相同
l=[1,2,3,4] l2=slice(1,3) #此处获得切片规则 print(l[l2]) #此处才进行真正的切片
执行结果:
[2, 3]
字符串相关:
format()
将一个数值进行格式化输出,在数据处理上有强大功能,(前面的博客有相关的介绍)
bytes()
转换成bytes类型 即将unicode转换成utf-8 或gbk格式,用于三者之间的转换
print(bytes('你好',encoding='gbk').decode('gbk')) print(bytes('你好',encoding='utf-8'))
字节类型的数据通常用于以下三个方面:
1.网络编程 只能传二进制
2.照片和视频也只能二进制存储
3.html网页爬取的内容也是二进制编码
bytearray()
转换成bytes类型后放入列表
ord()
字符按照unicode转数字 ascii转换
ascii()
是ascii的内容就打印出来,不是就转换成\u形式的数据
repr()
用于%r 格式化输出,就是将一个变量原封不动的打印出来,包括符号
a='1' print(reper(a))
forzenset()
返回一个冻结的集合,冻结后集合不能再添加或删除任何元素
数据结构相关内置函数:
all(可迭代对象)
判断参数的元素中是否含有bool值为false的值,若有返回false,若无返回true
any(可迭代对象)
判断参数的元素中是否含有bool值为true的值,若有返回true,若无返回false
重点:
zip()
拉链方法 ,返回一个迭代 将两个或两个以上的可列表或元组结合在一起,返回一个类似于字典的迭代器
a1=[1,2,3,4,5]
b1=('a','b','c','d')
c=zip(a1,b1)
print(c)
for i in c:
print(i)
执行结果:
<zip object at 0x000002045A3F4388>
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
filter(函数名,可迭代对象)
过滤函数,将可迭代对象的函数依次放入函数中当作参数执行,将所有的结果为true的值放入迭代器中返回
def is_jinum(x): return x % 2 ==1 #返回除以2余数为1的数据, ret=filter(is_jinum,[1,2,3,4,5,6]) #当遇到除以2余数为1的数据时,结果为True,将该数据返回 for i in ret: print(i)
执行结果:
1
3
5
map(函数名,可迭代对象)
将可迭代对象的函数依次放入函数中当作参数执行,将所有的运行结果放入迭代器中返回
ret=map(abs,[1,-1,2,-4]) for i in ret: print(i)
执行结果:
1
1
2
4
map和filter函数的不同:
filter 执行了filter后的结果集合 (小于等于) 执行之前的个数
只管筛选,不会改变原来的值
map 执行前后元素的个数不变,值会根据函数发生相应的改变
sort(key)
在原列表的基础上进行排序,改变原列表,可以设置key来改变排序的规则
sorted(可迭代对象,key,reverse)
对列表进行排序,不改变原列表,返回一个列表(因为复杂的排序算法不支持它返回一个迭代器),key设置排序规则,reverse设置反转排序
def df(x): return len(x) a=['123','23','wewdsd','45677','','6676'] print(sorted(a,key=df)) l=[' ',[1,2],'hello world'] print(sorted(l,key=df))
面向对象相关:
property
内置装饰器函数,只在面向对象中使用,使用property可以把一个函数伪装称一个属性,同时要求被伪装的函数不能有任何参数传入
from math import pi class Circle: def __init__(self,r): self.r=r def area(self): return self.r*2*pi def zhouchang(self): return self.r**2*pi r1=Circle(2) print(r1.area())
以上代码中,圆的周长和面积应该是一种圆的属性,不应该是一种方法,想要将类中的方法当作属性来调用,就要使用property,代码如下:
from math import pi class Circle: def __init__(self,r): self.r=r @property def area(self): return self.r*2*pi @property def zhouchang(self): return self.r**2*pi r1=Circle(2) print(r1.area) #将方法转换成属性来调用
setter
修改类中伪装成属性的函数
class Person: def __init__(self,name): self.__name=name @property def name(self): return self.__name+'sb' a=Person('二格') print((a.name)) a.name='三哥' #不能属性的方式修改被伪装的函数
以上代码中,想以普通属性的形式直接将伪装成函数的属性进行修改,这是不被允许的,想要修改,就要使用setter
class Person: def __init__(self,name): self.__name=name @property def name(self): return self.__name+'sb' @name.setter def name(self,new_name): self.__name=new_name a=Person('二格') print((a.name)) a.name='三哥'
deleter
想要删除该伪装属性,就必须使用deleter,代码如下:
class Person: def __init__(self,name): self.__name=name @property def name(self): return self.__name+'sb' @name.deleter def name(self,new_name): self.__name=new_name a=Person('二格') print((a.name)) del a.name print((a.name))
isinstance(obj,cls)
检查obj是否是类cls的对象,是返回True,否则返回false
class Teacher: dic={'学生':'show_stu_info','教师':'show_tea_info'} alex=Teacher() print(isinstance(alex,Teacher))
执行结果:True
issubclass(sub,super)
检查sub类是否是super的子类,是返回True
class Teacher: dic={'学生':'show_stu_info','教师':'show_tea_info'} class Student(Teacher): pass print(issubclass(Student,Teacher))
执行结果:True

浙公网安备 33010602011771号