文章目录
- 前言
- 1. 数学运算
- 1.1 abs()
- 1.2 round()
- 1.3 divmod()
- 1.4 pow()
- 1.5 max(),min()
- 1.6 sum()
- 1.7 eval()
- 2. 序列相关函数
- 2.1 sorted()和list.sorted()
- 2.2 reversed()
- 2.3 map()
- 2.4 range()
- 2.5 zip()
- 2.6 enumrate()
- 2.7 len()
- 3. 类型转换
- 3.1 chr()
- 3.2 oct()
- 3.3 bin() ,oct(),hex()
- 3.4 type()
前言
Python内置函数在Python中占有非常重要的地位,熟练使用Python的内置函数对学习和使用python来说非常重要,有时候会非常的便利。Python官方文档给出python内置函数文档如下,现在来记录一下一些常用的内置函数
1. 数学运算
1.1 abs()
- abs():返回给定参数的绝对值,参数可以是整数,浮点数,复数,如果是复数则返回其大小
1.2 round()
- round(number,[ndigits]):返回数字舍入到小数点后的n位精度。如果ndigits省略或为None,则返回与其输入最接近的整数.。值的注意的是,round()函数的四舍五入取值跟python的版本和上一位的值有关,如下
在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) 的结果,不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67,为什么?这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。
经上所述,用round()函数来进行四舍五入,其实是不靠谱的,如果对精确度要求比较高的应该避免使用round()来进行四舍五入操作。
1.3 divmod()
- divmod(a,b):a是被除数,b除数。divmod函数返回a除以b的商和余数,以元组形式返回。
1.4 pow()
- pow(a,b):返回数值的指数值,a为底数,b为指数。
1.5 max(),min()
max()求最大值,min()求最小值
1.6 sum()
- sum(iterable[start]):对系列进行求和运算,iterable为可迭代对象,比如列表,集合,元组;start为指定相加的参数,默认为0
1.7 eval()
- eval(expression, globals=None, locals=None):用来执行一个字符串表达式,对表达式进行分析计算并返回计算的值。她接受三个参数,如下
例1 只有expression参数
例2 传入gloabls参数
可以看到,在没有传入gloable参数式eval(‘a+b’)的值是14,在传入gloable参数后返回值为3,因为a,b的值被golable里面的值覆盖了,所以计算的是gloable里面a,b的值
例3 同时传入gloabls和locals参数
可以看到,在传入了local参数后,gloabls,local里面重复的参数的值是以local里面的值为准的,所以表达式返回值是11.
关于eval()函数更多的介绍可参考这篇文章:eval详解
2. 序列相关函数
2.1 sorted()和list.sorted()
- sorted(iterable, key=None, reverse=False):sorted()函数是python的一个内置排序函数,它接受三个参数,如下
iterable:可迭代对象,可以是字符,列表,字典等;
key:按照指定关键字排序,默认None;
reverse:排序规则,默认False升序,即从小到大。reverse=True时降序排列。
对列表,字符串进行排序
对字典排序,当key=None,reverse=False时,默认按键值进行升序排列。可以使用关键字随意按键或者值进行排序,如下
在使用sorted()进行排序时需要注意它的以下特性
1)结果返回一个新的列表
2)不是原地操作,不会改变原对象的的顺序
3)默认进行升序排列
4)sorted()是一个内置函数,标准安装的python环境就能使用
- list.sort(self, key=None, reverse=False):sort()是列表的一个方法,也能实现排序功能。其用法基本和sorted()内置函数差不多。不过它有着和sorted()区别很明显的特性,如下
1)sort()是列表的一个方法,使用格式list.sort()
2)原地操作,不会创建新的列表,直接在原列表上操作,所以会改变原列表的排序
3)没有返回值,或者返回值为None
2.2 reversed()
- reversed(seq):python的一个内置函数,返回序列的逆向迭代子。它有如下特性
1)不会改变原序列的排序
2)只能遍历一次
3) 返回值是一个迭代子
2.3 map()
- map(funtion, iterable):map()函数的作用是将函数funtion的功能,一一映射到序列iterable上,并返回一个map对象。map函数接受两个参数
1)funtion:一个功能函数
2)iterable:一个或多个序列
需要注意的是map()函数返回的对象类型需要区分版本,python2返回的是列表,python3返回的是一个迭代器。如下
python2返回列表
python3返回迭代器
可以用序列对应的内置转换函数,将map对象转换为序列原来的类型,如下
2.4 range()
- range(start, [stop], [step]):用于生成一个列表,接受三个参数,如下
1)start:默认从0开始
2)stop:结束为止,但不包括此位置的值
3)step:步进值,默认1
2.5 zip()
- zip(iterable1, iterable2,…):用来把多个可迭代对象中的元素压缩到一起,并返回一个可迭代的zip对象。其中返回的zip迭代对象都是包含原来的多个可迭代对象对应位置上元素的元组,其中包含的元素个数取决于多个迭代对象中元素最少的那个。Python3中,如果想将返回的zip对象转为列表,用list()函数即可。如下
1)查看返回类型,并转为列表:
2) 返回的zip对象元素个数由迭代对象中元素最少的那个决定
2.6 enumrate()
- enumerate(iterable, strat=0):用来枚举可迭代对象中的元素,返回值是enumerate对象。返回的enumerate对象中的元素是包含迭代对象中每个元素的值和其对应的索引位置的元组。索引默认从0开始,也可以通过改变start参数的值来改变起始位置。如下
2.7 len()
- len(object):返回对象object的长度,对象可以是序列(字符串,列表,元组)或者集合(字典,集合),如下
3. 类型转换
3.1 chr()
- 3.1 chr():返回对应的Unicode字符
3.2 oct()
- 3.2 oct():与chr()的作用相反,返回Unicode字符对应的数字
3.3 bin() ,oct(),hex()
- bin():将整型数字转为二进制
- oct():将整型数字转为八进制
- hex():将整型数字转为十六进制
注意三个函数的传入参数必须是整数。
3.4 type()
- type():返回对象的类型
更多的请参考python官方文档:https://docs.python.org/3/library/functions.html#