Python常用的内基函数用法精要
内置函数是Python内置对象类型之一,不需要额外导入任何模块即可直接使用,用C语言实现并且进行了大量优化,具有非常快的运行速度,推荐优先使用。记忆方法,多用多查。
函数 | 功能简要说明 |
---|---|
abs(x) | 返回数字x的绝对值或复数x的模 |
all(iterable) | 如果对于可迭代对象中所有元素x都等价于True,也就是对于所有元素 x都有bool(x)等于True,则返回True。对于空的可迭代对象也返回 True |
any(iterable) | 只要可迭代对象iterable中存在元素x使得bool(x)为True,则返回 True。对于空的可迭代对象,返回False |
ascii(obj) | 把对象转换为ASCII码表示形式,必要的时候使用转义字符来表示特定 的字符 |
bin(x) | 把整数x转换为二进制串表示形式 |
bool(x) | 返回与x等价的布尔值True或False |
bytes(x) | 生成字节串,或把指定对象x转换为字节串表示形式 |
callable(obj) | 测试对象obj是否可调用。类和函数是可调用的,包含call()方法的类的 对象也是可调用的 |
compile() | 用于把Python代码编译成可被exec()或eval()函数执行的代码对象 |
complex(real, [imag]) | 返回复数 |
chr(x) | 返回Unicode编码为x的字符 |
delattr(obj, name) | 删除属性,等价于del obj.name |
dir(obj) | 返回指定对象或模块obj的成员列表,如果不带参数则返回当前作用域 内所有标识符 |
divmod(x, y) | 返回包含整商和余数的元组((x-x%y)/y, x%y) |
enumerate(iterable[, start]) | 返回包含元素形式为(0, iterable[0]), (1, iterable[1]), (2, iterable[2]), …的迭代器对象 |
eval(s[, globals[, locals]]) | 计算并返回字符串s中表达式的值 |
exec(x) | 执行代码或代码对象 |
exit() | 退出当前解释器环境 |
filter(func, seq) | 返回filter对象,其中包含序列seq中使得单参数函数func返回值为 True的那些元素,如果函数func为None则返回包含seq中等价于True 的元素的filter对象 |
float(x) | 把整数或字符串x转换为浮点数并返回 |
frozenset([x])) | 创建不可变的集合对象 |
getattr(obj, name[, default]) | 获取对象中指定属性的值,等价于obj.name,如果不存在指定属性则 返回default的值,如果要访问的属性不存在并且没有指定default则抛 出异常 |
globals() | 返回包含当前作用域内全局变量及其值的字典 |
hasattr(obj, name) | 测试对象obj是否具有名为name的成员 |
hash(x) | 返回对象x的哈希值,如果x不可哈希则抛出异常 |
help(obj) | 返回对象obj的帮助信息 |
hex(x) | 把整数x转换为十六进制串 |
id(obj) | 返回对象obj的标识(内存地址) |
input([提示]) | 显示提示,接收键盘输入的内容,返回字符串 |
int(x[, d]) | 返回实数(float)、分数(Fraction)或高精度实数(Decimal)x的 整数部分,或把d进制的字符串x转换为十进制并返回,d默认为十进制 |
isinstance(obj, class-or-type-ortuple) | 测试对象obj是否属于指定类型(如果有多个类型的话需要放到元组 中)的实例 |
issubclass(cls,classor-tuple) | 测试类cls是否为指定类型的子类,用法与isinstance()函数相似 |
iter(…) | 返回指定对象的可迭代对象 |
len(obj) | 返回对象obj包含的元素个数,适用于列表、元组、集合、字典、字符串以及range对象和其他可迭代对象 |
list([x])、set([x])、 tuple([x])、dict([x]) | 把对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典 |
locals() | 返回包含当前作用域内局部变量及其值的字典 |
map(func, *iterables) | 返回包含若干函数值的map对象,函数func的参数分别来自于 iterables指定的每个迭代对象, |
max(x)、 min(x) | 返回可迭代对象x中的大值、小值,要求x中的所有元素之间可比 较大小,允许指定排序规则和x为空时返回的默认值 |
next(iterator[, default]) | 返回可迭代对象x中的下一个元素,允许指定迭代结束之后继续迭代时 返回的默认值 |
oct(x) | 把整数x转换为八进制串 |
open(name[, mode]) | 以指定模式mode打开文件name并返回文件对象 |
ord(x) | 返回1个字符x的Unicode编码 |
pow(x, y, z=None) | 返回x的y次方,等价于x ** y或(x ** y) % z |
print(value, …, sep=’ ‘, end=’\n’, file = sys. stdout, flush=False) | 基本输出函数 |
quit() | 退出当前解释器环境 |
range([start,] end [, step] ) | 返回range对象,其中包含左闭右开区间[start,end)内以step为步长 的整数 |
reduce(func, sequence[, initial]) | 将双参数的函数func以迭代的方式从左到右依次应用至序列seq中每个 元素,终返回单个值作为结果。在Python 2.x中该函数为内置函 数,在Python 3.x中需要从functools中导入reduce函数再使用 |
repr(obj) | 返回对象obj的规范化字符串表示形式,对于大多数对象有 eval(repr(obj))==obj |
reversed(seq) | 返回seq(可以是列表、元组、字符串、range以及其他可迭代对象) 中所有元素逆序后的迭代器对象 |
round(x [, 小数位数]) | 对x进行四舍五入,若不指定小数位数,则返回整数 |
sorted(iterable, key=None, reverse=False) | 返回排序后的列表,其中iterable表示要排序的序列或迭代对象,key 用来指定排序规则或依据,reverse用来指定升序或降序。该函数不改 变iterable内任何元素的顺序 |
str(obj) | 把对象obj直接转换为字符串 |
sum(x, start=0) | 返回序列x中所有元素之和,返回start+sum(x) |
type(obj) | 返回对象obj的类型 |
zip(seq1 [, seq2 […]]) | 返回zip对象,其中元素为(seq1[i], seq2[i], …)形式的元组,终结果 中包含的元素个数取决于所有参数序列或可迭代对象中短的那个 |
部分分析:
-
内置函数bin()、oct()、hex()用来将整数转换为二进制、八进制和十六进制形式,这三个函数都要求参数必须为整数。内置函数float()用来将其他数据转换为实数,complex()可以用来生成复数。
>>> bin(15) '0b1111' >>> oct(15) '0o17' >>> hex(15) '0xf'
-
int()、取整数部分,将其他进制字符串转换为10进制。
>>> int(1.3) 1 >>> int(1.6) 1 >>> int(-1.6) -1 >>> int('11',8) 9 >>> int('11',3) 4 >>> int('11',2) 3
-
ord()和chr()是一对功能相反的函数,ord()用来返回单个字符的序数或Unicode码,而chr()则 用来返回某序数对应的字符,str()则直接将其任意类型参数转换为字符串。
>>> ord('H') 72 >>> chr(_) #交互环境行 _ 代表上次的输出 'H' >>> _ 'H'
-
max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他可迭代对象中所有元素 大值、小值以及所有元素之和,sum()要求元素支持加法运算,max()和min()则要求序列 或可迭代对象中的元素之间可比较大小。内置函数max()和min()的key参数可以用来指定比较规则。
>>> arr = [1,2,3,4] >>> max(arr) 4 >>> min(arr) 1 >>> sum(arr) 10 >>> arr2 = ['1','11','111'] >>> max(arr2,key=len) #按长度比较 '111' >>> min(arr2,key=len) '1'
-
内置函数type()和isinstance()可以判断数据类型。
>>> a = 1 >>> type(a) <class 'int'> >>> a = '1' >>> type(a) <class 'str'> >>> isinstance(a,int) False >>> isinstance(a,str) True
-
sorted()对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表。
>>> arr = [4,2,5,1,7] >>> sorted(arr) #sorted返回值 [1, 2, 4, 5, 7] >>> arr #原来的不变 [4, 2, 5, 1, 7]
-
reversed()对可迭代对象(生成器对象和具有惰性求值特性的zip、map、filter、enumerate 等类似对象除外)进行翻转(首尾交换)并返回可迭代的reversed对象。
>>> list(reversed(arr)) #arr 看上面 list返回列表 [7, 1, 5, 2, 4]
-
range()语法格式为range([start,] end [, step] ),返回具有惰性求值特点的range对象,其中 包含左闭右开区间[start,end)内以step为步长的整数。参数start默认为0,step默认为1。
range(1, 10) >>> xrange(1,10) >>> list(range(1,10)) [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
enumerate()函数用来枚举可迭代对象中的元素,返回可迭代的enumerate对象,其中每个元 素都是包含索引和值的元组。
>>> enumerate(arr) <enumerate object at 0x00000219472246C0> >>> list(enumerate(arr)) [(0, 4), (1, 2), (2, 5), (3, 1), (4, 7)]
-
内置函数map()把一个函数func依次映射到序列或迭代器对象的每个元素上,并返回一个可迭 代的map对象作为结果,map对象中每个元素是原序列中元素经过函数func处理后的结果。
reduce():将一个接受两个参数的函数以迭代累积的方式从左到右依次作用到一个序列或迭代器对象的所有元素上。
>>> map(ord,'abc') <map object at 0x00000219472189B0> >>> list(map(ord,'abc')) [97, 98, 99] >>> from functools import reduce #python3.X中,reduce不是内置函数,需要从标准库functools导入 >>> reduce(lambda x,y:list((x,y)),[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) [[[[[[[[[0, 1], 2], 3], 4], 5], 6], 7], 8], 9] #不错的效果
-
input()和print()是Python的基本输入和输出函数
>>> print('hello word') hello word >>> input('please input:') please input:12 '12' #按字符串接受
-
eval()计算字符串的值
>>> eval(input('input a mathematics:')) input a mathematics:2+3*2 8 >>> eval('2+1') 3
eval不对参数字符串进行安全检查,一些别有用心的语句会引发安全漏洞,应尽量使用标准库ast提供的安全求值函数literal_eval()
>>> import ast >>> eval("__import__('os').startfile(r'C:\Windows\\notepad.exe')") #打开笔记本 >>> ast.literal_eval("__import__('os').startfile(r'C:\Windows\\notepad.exe')") Traceback (most recent call last): ……………… ValueError: malformed node or string: <_ast.Call object at 0x00000219472189B0>
。。。。。。