内建函数
python 的许多功能都已经有内建的函数,按字母排序如下
abs(x)
返回绝对值
all(iterable)
参数为可迭代对象,如果可迭代对象中的所有元素都为 True,则返回 True
any(iterable)
参数为可迭代对象,如果可迭代对象中的任何元素为 True,则返回 True
ascii(object)
自动执行该对象的 __repr__() 方法
bin(x)
将 int 对象转为八进制,八进制表示方法 0o11 等于十进制的 9
bool([x])
返回一个 bool 值
bytes([source[, encoding[, errors]]])
按照编码将 source 转换为字节
chr(i)
根据 unicode code 将一个序列转换为字符串,chr(65) 返回 A
ord(c)
根据 unicode code 将一个字符串转换为序列,ord(‘A‘) 返回 65
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
将字符串转换为可执行的代码
exec(object[, globals[, locals]])
执行代码字符串,可以直接是字符串,也可以是通过 compile 编译后的代码,但是无返回值
eval(expression, globals=None, locals=None)
执行表达式字符串,该字符串必须是包含运算符的表达式,有返回值 r = eval("7*8")
dir()
获取对象的方法
help()
获取对象的帮助信息
divmod(a,b)
获取两个数的商和余数,返回 (a/b,a%b)
enumerate(iterable, start=0)
返回一个 enumerate 对象,该对象为可被循环,获取到编号以及元素
isinstance(object, classinfo)
判断对象是否为类的实例
filter(function, iterable)
循环 iterable 并将每一个元素作为 function 的参数,如果返回结果为 True,则将该元素添加到一个新的 iterable 并返回
map(function,iterable)
循环 iterable 并将每一个元素作为 function 的参数,将 function 的返回值添加到一个新额 iterable 中并返回
format()
字符格式化
globals()
返回所有的全局变量
locals()
返回所有的局部变量
len()
计算对象的长度
max()
返回最大值
min()
返回最小值
sum()
求和
pow(x, y[, z])
返回 x**y%z,如 z 不存在则返回 x**y
reversed()
反转
round()
四舍五入
sorted()
排序
zip(*iterables)
返回一个以 tuple 作为元素的 iterator
常用内建函数详解
1、字符转换
bytes() 内建函数返回一个 bytes 对象
>>> b1 = bytes("您好",encoding=‘utf-8‘) >>> b2 = bytes("您好",encoding=‘gbk‘) >>> print(b1) b‘\xe6\x82\xa8\xe5\xa5\xbd‘ >>> print(b2) b‘\xc4\xfa\xba\xc3‘ >>> print(type(b1)) <class ‘bytes‘> >>> print(type(b2)) <class ‘bytes‘>
2、生成随机验证码
import random li = [] for i in range(6): r = random.randrange(0,5) if r == 2 or r == 4: num = random.randrange(0,10) li.append(str(num)) else: temp = random.randrange(65,91) li.append(chr(temp)) result = "".join(li) print(result)
3、compile()、exec()、eval() 应用
s = "print(123)" r = compile(s,‘<string>‘,‘exec‘) exec(r)
result = eval("7*8") print(result)
4、filter() 和 map() 应用
找出列表中所有大于 22 的元素
li = [11,22,33,44,55] li_new = filter(lambda x:x>22,li) print(list(li_new))
给列表中的所有元素增加 100
li = [11,22,33,44,55] li_new = map(lambda x:x+100,li) print(list(li_new))
5、文件操作
open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打开一个文件,并返回一个文件对象,如果文件不能打开则报 OSError 错误
打开文件
打开文件时需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作
文件的打开模式有
- r,只读模式打开【默认模式】
- w,只写模式【不可读;不存在则创建;存在则清空内容;】
- x,只写模式【不可读;不存在则创建,存在则报错】
- a,追加模式【不可读;不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,读写【可读,可写,可调整指针写内容】常用
- w+,读写【可读,可写,写时会先覆盖】
- x+,读写【可读,可写】
- a+,读写【可读,可写,无论如何调整指针,都会写在文件的最后】
"b"表示以字节的方式操作
当打开方式包含 b 时,读取到的内容是字节类型,写入时也需要提供字节类型
- rb 或 r+b
- wb 或 w+b
- xb 或 x+b
- ab 或 a+b
操作文件
close() | 关闭文件 |
fileno() | 文件描述符 |
flush() | 当文件没有关闭时,强制刷新内存到硬盘 |
isatty() | 是否为 tty 设备 |
read() | 读取指定字节的文件,默认读取全部 |
next() | 读取下一行数据,不存在则报错 |
readable() | 文件是否可读 |
readline() | 仅读取一行数据 |
readlines() | 读取所有数据,并根据换行保存为列表 |
seek() | 调整文件中的指针位置 |
tell() | 获取指针位置 |
truncate() | 截断文件,从指针所在位置只有全部删除 |
writeable() | 是否可写 |
write() | 写入数据 |
writelines() | 写入多行数据,数据是一个list,元素必须都是 str |
关闭文件
打开的文件必须在使用完成之后进行关闭,可以通过 file.close() 关闭,也可以通过 with...as... 自动关闭
实例
已只读模式打开 db 文件,并输出所有内容
f = open(‘db‘,‘r‘,encoding=‘utf-8‘) print(f.read()) f.close()
通过 with...as... 打开文件,with 下面的代码段执行完成后会自动关闭文件,不需要再执行 file.close()
with open(‘db‘) as f: # f 为一个文件对象,逐行输出文件的每一行 for line in f: print(line)
file.read() 和 file.tell()
# db 文件的内容为“您好” # 已 utf-8 打开文件,f.read(1),输出您,但是 f.tell() 返回的值为 3 f = open(‘db‘,‘r‘,encoding=‘utf-8‘) print(f.read(1)) print(f.tell()) f.close()
以 b 模式打开文件,并进行写入
with open(‘db‘,‘r+b‘) as f: f.truncate() f.write(bytes(‘您好‘,encoding=‘utf-8‘))
同时打开多个文件
with open(‘db‘) as f1, open(‘db2‘) as f2: pass