目录

1. 输入(input)/输出(output)
2. 文件操作
3. 类型转换
4. 数学相关
5. 序列处理函数
6. callable
7. 反射

Python解释器为我们内置了很多有用的函数。

一、输入(input)/输出(output)

print: 用于打印输出(写代码的时候调试时经常用到) print(*args, sep=' ', end='\n', file=None)

常见的几种用法 print(2022) print('hello' + 'world'') print('hello', 'world') print('hello', 'world', sep='---') print('hello world', end=',') print('2022-05-07')

如上所示,print 可以打印任意数据类型,可接收任意参数,任意位置参数之间以sep分隔,sep默认为" ",end默认为"\n"

input: 从标准输入中读入一个字符串,并自动忽略换行符。 也就是说所有形式的输入按字符串处理,如果想要得到其他类型的数据进行强制类型转化。默认情况下没有提示字符串(prompt string),在给定提示字 符串下,会在读入标准输入前标准输出提示字符串。

age = input('请输入你的年龄') # 程序会阻塞,等待你在终端的输入。 print(age, type(age))

可以看出,从 input 获取到的返回值一定是字符串类型。

二、文件操作

open: 用于打开文件,创建一个文件对象。 open(path, mode, encoding)

name : 一个包含了你要访问的文件路径的字符串值。
mode : 决定了打开文件的模式:只读,写入,追加等,默认是只读模式
encoding: 指定打开文件的编码格式,默认是当前操作系统使用的编码格式,如windows: gbk, 当以二进制模式打开的时候,不需要传递此参数。

文件对象常用的方法:

file.read([size]):size 未指定则返回整个文件,f.read()读到文件尾时返回""(空字串)。
file.readline():返回一行。
file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
for line in f: print(line):通过迭代器访问。
f.write("hello\n"):如果要写入字符串以外的数据, 先将它转换为字符串。
f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。
f.seek(偏移量,[起始位置]):用来移动文件指针。
    偏移量: 单位为字节,可正可负
    起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
f.close() 关闭文件

mode:

r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。

w: 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+: 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

谨记要关掉文件句柄(即调用close方法),常用 with 来操作文件,即不用自己关闭。

f = open('filepath') for line in f: print(line) f.close()
with open('filepath') as f: for line in f: print(line)

三、类型转换

int: 将 float 或 str 转为 int类型,默认为10进制 (当第一个参数为str时,可指定base参数)。

int(12.5) # 12 int('11') # 11 int('11', 2) # 3 int('0b11', 2) # 4

float:将 str 或 int 类型 转为 float 类型,且会自动去除 str 类型两边空格

float('12.3') # 12.3 float(' 12') # 12.0 float('+105') # 105.0 float(" -105 ") # -105.0 float() # 0.0 float(12) # 12.0

str: 把对象转换为 str 类型

str(12) # '12' str([]) # '[]' str(()) # '()' str(3.14) # '3.14'

list: 将 Iterable类型 转换为列表 Iterable: 可迭代对象,可以被作用于for循环的对象。容器类型都是可迭代对象。

list('123') # ['1', '2', '3'] list((1, 2, 3)) # [1, 2, 3] list({'name': 'Hugh', 'city': 'Gz'}) # ['name', 'city'] list({1, 2, 3}) # [1, 2, 3] list([1, 2, 3]) # [1, 2, 3]

tuple: 将 Iterable 转换为元组

tuple('123') # ('1', '2', '3') tuple((1, 2, 3)) # (1, 2, 3) tuple({'name': 'Hugh', 'city': 'Gz'}) # ('name', 'city') tuple({1, 2, 3}) # (1, 2, 3) tuple([1, 2, 3]) # (1, 2, 3)

dict: 生成一个新的字典对象

dict() # {} dict([('name', 'Hugh'), ('age', 26)])

chr: 返回数字对应的 Unicode 字符

chr(65) chr(20013) # '中'

ord: 返回 Unicode 字w符的字符串对应的 Unicode 码的十进制整数

ord('A') # 65 ord('中') # 20013

四、数学相关

abs: 求绝对值

abs(10.1) # 10.1 abs(-10) # 10 abs(0) # 0

max: 求最大值

max([1, 2, 3, 4, 5]) # 5 max('abcdefg') # g

注意: 字符串之间的比较,是通过调用 ord 函数后返回数值比较

min: 求最小值

min([1, 2, 3, 4, 5]) # 1 min('abcdefg') # a

divmod: 返回整除整数和余数

divmod(1, 2) # (0, 1))

pow: 返回 x * y 或 返回 x * y % z的值

pow(10, 3) # 10 ** 3 => 10 * 10 * 10 => 1000 pow(10, 3, 33) # 10 ** 3 % 33 => 10

五、序列处理函数

len: 获取对象长度

len([1, 2, 3]) # 3 len('123') # 3 len((1, )) # 1 len({1, 2, 3}) # 3 len({'name': 'Hugh'}) # 1

filter: :依次取出 Iterable 中的元素交给一个函数处理,取返回 True 的元素

list(filter(lambda x: x > 0, [-1, -2, 0, 1, 2])) # filter 返回的是个迭代器对象,可用 list 转为列表 [1, 2]

迭代器: 为了节省内存,每次只从对象中读取一条数据,不会造成内存的过大开销

map: 依次取出 Iterable 中的元素交给一个函数处理,返回一个新的迭代器

map(abs, [-1, -2, 0, 1, 2]) # 返回的是个迭代器对象,可用 list 转为列表 [1, 2, 0, 1, 2]

zip: 依次取出 Iterable 中的元素组成新的元组,返回一个迭代器

zip([1, 2, 3], ['a', 'b', 'c']) # 返回的是个迭代器,可调用 list 转为列表 [(1, 'a'), (2, 'b'), (3, 'c')]

六、callable

callable: 判断一个对象是否可调用

callable(abs) # True

七、反射

hasattr(obj, name) 判断 obj 对象是否拥有名为 name 的属性/方法。(hasattr 是通过调用 getattr(obj, name) 是否抛出异常来实现的)

hasattr(list, 'append') # True hasattr(list, 'add') # False

getattr(obj, name) 通过字符串 获取对象属性/方法

getattr(list, 'append') # <method 'append' of 'list' objects>

setattr(obj, name, value) 给对象添加 属性/方法

class Person: pass p = Person() setattr(p, 'name', 'Hugh') print(p.name) # 'Hugh'

delattr(obj, name) # 删除对象的属性/方法

class Person: def __init__(self, name): self.name = name p = Person('Hugh') print(p.name) # 'Hugh' delattr(p, 'name') p.name # raise AttributeError: 'Person' object has no attribute 'name'

练习 学员管理系统 需求 进入系统,显示系统功能界面,功能如下 添加学员(学员信息有 学号、姓名、手机号) 删除学员(根据学号删除) 修改学员信息(根据学号修改) 查询学员信息(根据学号查找) 显示所有学员信息 退出系统