学习书籍
-
Python Tutorial
-
Python Cookbook
-
Python 基础编程
-
流畅的Python
帮助函数
dir help
python特殊语法
-
关键字所在行的最后加冒号:
-
eval函数,评估函数,将python中字符串转换为语句并执行;去掉引号,并执行余下的语句
-
列表,元组,字符串都是序列
-
遍历循环用for in,无限循环用while
-
python的内置函数,不需要导入
-
标准库,py解释器自带的库,不需要安装
内建函数,标准库函数,第三方库函数
直接使用,需要导入,需要安装后导入
-
with语句:实现上下文管理
-
sys是标准库自带模块,argv是一个命令行参数的列表,保存了程序运行时传给它的所有参数,包括程序自身的名字(sys.argv[0]),所以我们给程序的外部参数,都是从1开始计
-
in 运算符的包含和迭代 if in ,for in
-
复合语句以冒号结束,表示缩进代码的开始
-
三个布尔运算符:not and or
-
is 表示地址相等,==值相等
-
open函数
打开函数返回一个文件对象,文件对象可迭代
read readline readlines
write writelines -
for循环和range()函数
-
sys.exit()提前结束程序
-
在 Python 中有一个值称为 None,它表示没有值。None 是 NoneType 数据类型 的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined)。就像布尔值 True 和 False 一样,None 必须大写首字母 N。 如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可 能有用。有一个使用 None 的地方就是 print()的返回值。print()函数在屏幕上显示文 本,但它不需要返回任何值,这和 len()或 input()不同。但既然所有函数调用都需要 求值为一个返回值,那么 print()就返回 None。
在幕后,对于所有没有 return 语句的函数定义,Python 都会在末尾加上 return None。这类似于 while 或 for 循环隐式地以 continue 语句结尾。而且,如果使用不 带值的 return 语句(也就是只有 return 关键字本身), 那么就返回 None。spam = print('Hello!') #Hello! None == spam #True
-
多重赋值技巧 多重赋值技巧是一种快捷方式,让你在一行代码中,用列表中的值为多个变量 赋值。变量的数目和列表的长度必须严格相等,否则 Python 将给出 ValueError:
cat = ['fat', 'black', 'loud'] size, color, disposition = cat
-
in 和 not in 操作符可以检查值是否存在于列表中
-
all()和any(): 小函数,大作用
常用模块
-
标准安装包含一组称为标准库的模块
-
sys 模块访问与解释器相关的变量和函数
sys.argv
sys.path:解释器会按照sys.path列表的顺序来查找被引入的包或模块名字,可以操作 sys.path,使得其它路径的文件加入到Path中,使之能被解释器发现。sys.path.append("/data") -
os.path
-
import random
-
import time
datetime, date, time -
from threading import Thread, Semaphore, currentThread, Lock, Event,Timer
-
from multiprocessing import Process, Lock
-
from typing import Any, TypeVar, Generic, Optional
-
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
-
import os, time, random
-
queue.LifoQueue(maxsize=0) #堆栈:last in fisrt out
-
queue.Queue(maxsize=0) #队列:先进先出
-
queue.PriorityQueue(maxsize=0) #优先级队列:存储数据时可设置优先级的队列
基本数据结构
- 序列
字符串
列表
元组 - 散列
集合
字典 - collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。方法或函数 解释 amedtuple 生成可以使用名字来访问元素内容的tuple eque 双端队列,可以快速的从另外一侧追加和推出对象 ounter 计数器,主要用来计数 rderedDict 有序字典 efaultdict 带有默认值的字典
字典
- keys()、values()和 items()方法:
分别对应于字典的键、值和键-值对,这些方法返回的值不是真正的列表,它们不能被修改,没有 append()方法。但这些数据类型(分别是 dict_keys、dict_values 和dict_items)可以用于 for 循环。name_value = {1: 2, 2: 3} print(type(name_value.keys())) # <class 'dict_keys'> print(type(name_value.values())) # <class 'dict_values'> print(type(name_value.items())) # <class 'dict_items'>
- get()方法
在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦。好在,、get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值 - setdefault()方法
content = "Hello Python; Hello Word." char_count = {} for ch in content: char_count.setdefault(ch, 0) #setdefault() 方法调用确保了键存在于 count 字典中(默认值是 0), #这样在执行 count[character] = count[character] + 1时,就不会抛出 KeyError 错误 char_count[ch] = char_count[ch] + 1 print(char_count)
推导表达式
- 列表推导
- 集合推导
- 字典推导
流程控制
- 选择结构
条件判断
三目运算 - 逻辑运算
- 循环结构
条件循环
迭代循环
默认值
- 第一种方式
groups = {}
for (key, value) in data:
groups.setdefault(key, []).append(value) - 第二种方式
from collections import defaultdict
groups = defaultdict(list)
for (key, value) in data:
groups[key].append(value)
三方库
- jieba 中文分词库
- turtle 海龟绘图库
- pyInstaller py转化为可执行文件
- wordcloud词️
- numpy
- pandas
字符串
- 单引号
- 双引号,双引号里面的单引号,无需转义
- 三引号,字符串可以换行,sql语句
- r字符串,文件路径无需转移
- f字符串,格式化字符串,输出带有变量的字符串
- 模板字符串,槽,format方法
print('"biaoer"') # "biaoer"
print("""123 456""") # 123 456
print(os.path.exists(r'C:\test')) # False
name = '彪'
print(f'name is {name}') # name is 彪
print("name is %s" % name) # name is 彪
print("name is {0}".format(name)) # name is 彪
函数的分类
-
内建函数 包含在utils模块中的函数
-
标准库函数 先导入模块在使用
-
第三方库函数 先安装,再导入使用
-
自定义函数
包与模块
-
模块
一个模块(module)就是一个py文件,模块的名字就是该文件的名字(不包含.py后缀) -
包
一个 包(package)就是一个文件夹,(Python2规定该文件夹必须包含一个 init.py ,Python3没有要求),包名就是文件夹名。 -
按 import 进来的对象不同分为4种场景:
- import # 导入一个包
- import # 导入一个模块
- from import # 从一个包中导入模块/子包/对象
- from import # 从模块中导入对象
-
模块的 __file__属性
导入模块时,可以通过模块的 __file__属性查看模块所在磁盘的路径位置 -
不要使用 from import * ,命名空间是个好东西
解包
序列自动解包,解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来
除了列表对象可以解包之外,任何可迭代对象都支持解包,可迭代对象包括元组、字典、集合、字符串、生成器等实现了__next__方法的一切对象