python中文官方文档记录
随笔记录
python3.10中文官方文档百度网盘链接:https://pan.baidu.com/s/18XBjPzQTrZa5MLeFkT2whw?pwd=1013
提取码:1013
1、python解释器
启动解释器的另一种方式,建议用单引号标注整个 command。python -c command [arg] ...
Python 模块也可以当作脚本使用。输入: python -m module [arg] ... ,会执行 module 的源文件,这跟在命令行把路径写全了一样。
解释器读取命令行参数,把脚本名与其他参数转化为字符串列表存到sys.argv,import sys
除法运算:( / )返回浮点数,// 运算返回整数.
交互模式下,上次输出的表达式会赋给变量 _
2、python速览
内置支持 复数,后缀 j 或 J 用于表示虚数(例如 3+5j )。
print() 函数输出的内容更简洁易读,它会省略两边的引号,并输出转义后的特殊字符。
使用 原始字符串,在引号前添加 r 即可:print(r'C:\some\name')
字符串字面值可以实现跨行连续输入。实现方式是用三引号: """...""" 或 '''...''' ,字符串行尾会自动加上回车换行,如果不需要回车换行,在行尾添加 \ 即可.
相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并.
索引越界会报错, 但是,切片会自动处理越界索引.
Python 字符串不能修改,是 immutable 的。因此,为字符串中某个索引位置赋值会报错.
列表
遍历某个集合的同时修改该集合的内容,很难获取想要的结果。要在遍历时修改集合的内容,应该遍历该集合的副本或创建新的集合:for user, status in users.copy().items():
range右边界取不到,sum(range(4))返回6。
else 子句可以属于 for 循环,不属于 if 语句
match 语句接受一个表达式并将它的值与以一个或多个 case 语句块形式给出的一系列模式进行比较。
1. def http_error(status): #如果status传404,返回Not found 2. match status: 3. case 400: 4. return "Bad request" 5. case 404: 6. return "Not found" 7. case 401 | 403 | 404: 8. return "I'm a teapot" 9. case _: #通配符,一定会匹配成功 10. return "Something's wrong with the internet"
“|” 和”or ”都表示或者,&表示且。
3、其他流程控制工具
没有 return 语句的函数也返回值,只不过这个值比较是 None (是一个内置名称)。
return 语句不带表达式参数时,返回 None。
列表append()相当于result = result + [a]
函数
默认值只计算一次
1. def f(a, L=[]): 2. L.append(a) 3. return L 4. 5. print(f(1))#[1] 6. print(f(2))#[1, 2] 7. print(f(3))#[1, 2, 3]
*name 形参接收一个 元组,**name 形式时,接收一个字典,def cheeseshop(kind, *arguments, **keywords):
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):仅限位置形参应放在 / (正斜杠)前,/ 后可以是 位置或关键字 或 仅限关键字 形参。应在参数列表中第一个 仅限关键字 形参前添加。使用仅限位置形参,可以让用户无法使用形参名。
1. >>> def pos_only_arg(arg, /): 2. ... print(arg) 3. ... 4. >>> def kwd_only_arg(*, arg): 5. ... print(arg) 1. >>> pos_only_arg(1) 2. 1 3. >>> pos_only_arg(arg=1) #报错 4. >>> kwd_only_arg(3)#报错 5. >>> kwd_only_arg(arg=3) 6. 3
字典可以用 ** 操作符传递关键字参数
1. >>> def parrot(voltage, state='a stiff', action='voom'): 2. ... print("-- This parrot wouldn't", action, end=' ') 3. ... print("if you put", voltage, "volts through it.", end=' ') 4. ... print("E's", state, "!") 5. ... 6. >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} 7. >>> parrot(**d) 8. -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
lambda小巧灵活
1. >>> def make_incrementor(n): 2. ... return lambda x: x + n 3. ... 4. >>> f = make_incrementor(42) 7. >>> f(1) 8. 43
1. >>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2. >>> pairs.sort(key=lambda pair: pair[1]#排序
4、数据结构
list.extend (iterable) 用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表).
pop()、append() 类似栈,后进先出
实现队列(先进先出)最好用 collections.deque ,可以快速从两端添加或删除元素。
queue.append后入,queue.popleft()前出,删除最左边元素
map接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。
list(map(lambda x: x**2, range(10)))等价于[x**2 for x in range(10)],
#连续使用for循环
1. >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] 2. [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] 3. >>> vec = [[1,2,3], [4,5,6], [7,8,9]] 4. >>> [num for elem in vec for num in elem] 5. [1, 2, 3, 4, 5, 6, 7, 8, 9]
t = 12345, 54321, 'hello!' 等价于12345, 54321, 'hello!' = t 默认t为一个元组,输入元组时,圆括号可有可无
u = t, (1, 2, 3, 4, 5)
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
只有一个元素的元组可以通过在这个元素后添加逗号来构建
集合是由不重复元素组成的无序容器.
set('abracadabra') 返回 {'a', 'r', 'b', 'c', 'd'}
对字典执行 list(dic) 操作,返回该字典中所有键的列表,sorted(dic)字典可以按键 排序
dict() 构造函数可以直接用键值对序列创建字典:
1. >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) 2. {'sape': 4139, 'guido': 4127, 'jack': 4098} 3. >>> dict(sape=4139, guido=4127, jack=4098) 4. {'sape': 4139, 'guido': 4127, 'jack': 4098}
enumerate() 函数可以同时取出位置索引和对应的值
同时循环两个或多个序列时,用 zip() 函数可以将其内的元素一一匹配:
1. >>> questions = ['name', 'quest', 'favorite color'] 2. >>> answers = ['lancelot', 'the holy grail', 'blue'] 3. >>> for q, a in zip(questions, answers): 4. ... print('What is your {0}? It is {1}.'.format(q, a)) 5. ... 6. What is your name? It is lancelot. 7. What is your quest? It is the holy grail. 8. What is your favorite color? It is blue.
for i in reversed(range(1, 10):倒叙显示
5、输入与输出
f'Results of the {year} {event}'
str.format()
把值转化为字符串,str() 函数返回供人阅读的值, repr() 则生成适于解释器读取的值,多一个‘’,s='hello moto',repr(s)="'hello moto'"
str.rjust() 方法通过在左侧填充空格,同类方法还有str.ljust() 和 str.center()
>>>str = 'runoob' >>> str.center(20, '*') '*******runoob*******' >>> str.center(20) ' runoob '
str.zfill() ,该方法在数字字符串左边填充零
json.load:表示读取文件,返回python对象
json.dump:表示写入文件,文件为json字符串格式,无返回
json.dumps:将python中的字典类型转换为字符串类型,返回json字符串 [dict→str]
json.loads:将json字符串转换为字典类型,返回python对象 [str→dict]
load和dump处理的主要是 文件
loads和dumps处理的是 字符串
6、类
如果同样的属性名称同时出现在实例和类中,则属性查找会优先选择实例:
7、标准库简介
删除文件:os.remove() ; 删除一个空目录:os.rmdir()
shutil.copyfile('data.db', 'archive.db')复制出一个新文件; shutil.rmtree(directory_path)
,删除文件
shutil.move('/build/executables', 'installdir') 重命名文件
glob 模块提供了一个在目录中使用通配符搜索创建文件列表的函数
1. >>> import glob 2. >>> glob.glob('*.py') 3. ['primes.py', 'random.py', 'quote.py']
终止脚本的最直接方法是使用 sys.exit()
乏于表达,疏于张扬,却巍峨持重。