python中的内置函数总共有68个,与基础数据类型相关内置函数有38个,根据其功能,可以分为2部分:
1.与数字相关的14个内置函数:
和数字相关的14个内置函数总结如下:
以下进行说明:
(1).关于数据类型的函数:
由于bool,int,float都是常见的数据类型,在此处不再说明,需要注意的是,float类型的小数,当小数很长是,变量的值会不准,例如:
f = 1.23423973496754890
print(f)
输出是:1.234239734967549
complex([real[, imag]])函数用于创建一个值为 real + imag * j 的复数;
参数:两个数字或一个字符串(字符串必须是数字或复数表达式)
real – int, long, float或字符串;
imag – int, long, float;
返回值:一个复数
说明:python中复数的虚部用j或J表示,而不是用i.
例如:
print(complex(1.2,3.4))
print(complex('1+2j'))
输出:
(2).关于进制转换的函数
bin() & oct() & hex() 用来做进制转换
参数:int型的整数
返回值:参数进行进制转换后的结果
返回值类型:字符串型
例如:
print(bin(10),type(bin(10)))
print(oct(10),type(oct(10)))
print(hex(10),type(hex(10)))
输出结果如下:
(3).关于数学运算的函数
1.abs(x):计算x的绝对值
参数:数值表达式
返回值:参数的绝对值,返回值类型与参数类型相同
2.divmod(x,y):计算x/y的商和余数
参数:int型或float型的数字
返回值:(x//y, x%y)
返回值类型:元组
例如:
print(divmod(7.6,3))
print(divmod(9,5))
结果:
3.round(num, [x]):取小数的精确值
参数:num为int或float型,x为int型数字,不传参默认保留整数
返回值:将num精确到x位
返回值类型:float型
在使用round时需要注意pyhton2和python3的区别:
在python2中:保留值将保留到离上一位更近的一端(四舍六入),如果距离两端一样远,则保留到离0远的一边。所以round(0.5)会近似到1,而round(-0.5)会近似到-1。
在python3中:如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2。
还需要注意一些特殊值的近似,例如: round(2.675, 2) 的结果是 2.67,这是因为浮点数的精度问题,因为在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,所以机器会出了截断处理,2,675 的实际存储的值会比它本身小一点。
print(round(3.1415926,3))
print(round(0.5))
print(round(2.675,2))
结果为:
4. pow(x, y[, z]):函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
参数:2个参数时可以是 int 或 float 型数字,3个参数时参数必须全为 int 型
返回值:xy 或 (xy)%z
返回值类型:2个参数时,若x,y都是int型,则返回int型,若有一个float型,则返回值为float型;3个参数时返回int型。
print(pow(2,3))
print(pow(3.0,2.0))
print(pow(2,3,1))
print(pow(3,2,5))
计算结果:
sum() & min() & max() 是常用函数,不再进行说明
2.与数据结构相关的24个内置函数
和数据结构相关的24个内置函数总结如下:
(一些常用的函数不再过多说明)
(1).序列相关函数
1.reversed() 函数:将参数所给的序列反序输出
参数:可迭代的序列
返回值:参数反序
返回值类型:迭代器
说明:reverse()方法没有返回值会改变直接原序列,此函数不会改变原序列
l = [2,1,3,4,5]
l2 = reversed(l)
l3 = l.reverse()
print(l)
print(l2)
print(l3)
for i in l2:
print(i,',',end='')
输出如下:
2.slice(start, stop[, step]) 函数:
参数:int 型
返回值:切片对象
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2) # 相当于 l[1:5:2] 索引值1到4的元素并隔一个取值
print(l[sli])
print(sli)
# 等价于
print(l[1:5:2])
输出为:
3.bytes() 函数:返回参数对应的bytes类型数据,可以将unicode编码转换成 utf-8, gbk等
说明:由于python在内存中的存储都是以unicode编码格式进行存储,所以当我们需要按照指定格式编码解码时,先将字符decode为unicode编码,在encode为指定编码
print(bytes('你好', encoding='GBK')) # unicode转换成GBK的字节码
print(bytes('你好', encoding='utf-8')) # unicode转换成utf-8的字节码
print(bytes('你好', encoding='GBK').decode('GBK')) # 解码方式正确才能得出正确信息
print(bytes('你好', encoding='utf-8').decode('GBK')) # 解码方式错误会造成乱码
输出结果为:
4.bytearray() 函数:查看参数在内存中对应的字节
返回值:字节数组
说明:可以直接修改长字符串中的某个字节,而不在内存中创建新的变量
b_array = bytearray('你好', encoding='utf-8')
print(b_array, id(b_array))
print(b_array.decode('utf-8'))
b_array[0] = 227
print(b_array.decode('utf-8'), id(b_array))
输出结果为:
5.memeoryview() 函数:
说明:我们在对字符串进行切片时,切片的结果会生成一个新的字符串存在内存中,memeoryview 可以将一个bytes类型字符串切片查看,不会生成一个新的占内存的字符串,但是查看也是只能看到字节码,若是将字节码转换成字符串又会占内存(字符产需要存储)
li = 'abcdef'
print(bytes(memoryview(bytes(li, encoding='utf-8'))[:3]))
6.repr() 函数: 会让一个变量原封不动的输出出来
例如:
name = 'name'
print('%s'%name)
print('%r'%name)
print(repr('1'))
print(repr(1))
输出:
(2).其他一些与数据类型相关的函数
1.enumerate() 函数:
参数:为可遍历/可迭代的对象
返回值:enumerate对象
说明:enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate
举例:
lis = [1,2,3,4,5]
for index in enumerate(lis):
print(index)
# for循环遍历
for index, value in enumerate(lis):
print(index,value)
# 指定enumerate索引从1开始
for index,value in enumerate(lis,1):
print(index,value)
# 需要统计大文件行数时:
count = 1
for index, line in enumerate(open('file',encoding='utf-8')):
count += 1
2.all & any 函数:
参数:可迭代的
返回值:True & False
返回值类型:bool
说明:all传入的参数中有任何一个False就返回False,都是True则返回True
any传入的参数中有任何一个True就返回True,都是False则返回False
print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))
print(all([False, 13]))
print(all([True,'',123]))
print(all([True,123]))
print(any(['', True, [], 123]))
3.zip() 函数:拉链方法,以最短的为基准
参数:可迭代的
返回值类型:迭代器
说明:字典只能将key拉上,而且key是无无序的
l1 = [1,2,3,4,5]
l2 = ['a', 'b', 'c', 'd']
t3 = ('*', '**', [1,2,3])
d4 = {'k1':1, 'k2':2}
print('__next__' in dir(zip(l1, l2, t3, d4)))
print('__iter__' in dir(zip(l1, l2, t3, d4)))
for i in zip(l1, l2, t3, d4):
print(i)
输出为:
filter() & map() & reduce() 函数在其他博客中已经说明…