执行代码的核心程序,负责将编写的代码转换为计算机能理解的指令并运行
默认:Cpython, 由c语言编写
勾选add to path,保证在cmd中能使用python、pip等命令
int
存在小整数的说法,[-5,256]都是小整数。小整数用is判断是相等的
float
浮点数用于表示实数(带小数点的数字)
bool
布尔值表示逻辑真(True)或假(False)。只有两个值:True 和 False(注意首字母大写)。是 int 的子类(True=1,False=0)
str
count(sub,start=0,end=len(str))
返回sub在str中出现的次数
startswith(prefix,start=0,end=len(str))
检查字符串在指定范围是否以prefix开头,
是则返回true
否则False
endswith(suffix,start=0,end=len(str))
检查字符串在指定范围是否以prefix结尾,
是则返回true
否则False
find(sub,start=0,end=len(str))
检测sub是否包含在str指定范围
index(sub,start=0,end=len(str))
与find一致,但sub不在str中会报异常
rindex(sub,start=0,end=len(str))
与index一致,但从右开始寻找
lstrip()
默认删除左边的空格
rstrip()
默认删除右边的空格
strip()
默认删除左右两边的空格
replace(old,new,max=str.count(old))
将字符串中old替换成new,若max指定,则替换不超过max次
join(seq)
以str作为分隔符,将seq中所有的元素合并为一个新字符串
split(sub=“”,num=str.count(obj))
以sub为分隔符截取字符串,若num有指定值,则截取num次
splitlines(keepends=False)
按行\r、\r\n、\n、分隔,返回一个包含各行作为元素的列表,如果参数keepends为False,不包含换行符,如果为True,则保留换行符
bytes
b“***”
list
append(obj)
在列表末尾添加新对象
count(obj)
统计某个元素在列表中出现的次数
extend(seq)
在列表末尾一次性追加另一个序列
index(obj)
在列表中找出某个值第一个匹配项的索引位置
insert(index,obj)
将对象插入列表
pop(index)
移除列表中一个元素,默认最后一个,返回该元素的值
remove(obj)
移除列表中某个值的第一个匹配项
reverse()
反向列表中元素
sort()
对原列表进行排序
clear()
清空列表
copy()
复制列表
dict
key in dict
若键在字典dict中返回True,否则返回False
item()
返回可遍历的(键,值)元组
keys()
返回一个字典所有的键
values()
返回字典中的所有值
update(dict2)
把字典dict2的键/值对添加到dict里
get(key,default=None)
返回指定键的值,若键不存在于字典中,将会返回default值
setdefault(key,default=None)
返回指定键的值,若键不存在于字典中,将会添加键并将值设为default的值
pop(key[,default])
删除键key对应的值,返回被删除的值。key不存在,返回default的值。若key不存在,default也未传值,则报错
copy()
返回一个字典的浅复制
clear()
删除字典内所有元素
若dict中重复key,如何取值
取后者
set
{xxx,xxx}
和字典长得很像,定义用set()
tuple
count(obj)
统计某个元素在元组中出现的次数
index(obj)
在元组中找出某个值第一个匹配项的索引位置
frozenset
不可变集合类型,与set类似但不可修改
fs = frozenset([1, 2, 3, 4])
print(fs) # 输出: frozenset({1, 2, 3, 4})
#fs.add(5) # 会报错,因为 frozenset 不可变
#可以作为字典的键
d = {fs: "value"}
可变与不可变之间的区别
可hash,不可变
不可hash,可变
NoneType
None 是 Python 中表示空值或缺失值的特殊对象,它是 NoneType 类型的唯一实例
x = None
print(type(x)) # 输出:
range
range 表示一个不可变的数字序列,通常用于循环中
r = range(5) # 0, 1, 2, 3, 4
r2 = range(1, 10, 2) # 1, 3, 5, 7, 9
function
在 Python 中,函数也是对象,类型为 function
def greet(name):
return f"Hello, {name}!"
print(type(greet)) # 输出:
type
type 在 Python 中有双重作用:
作为获取对象类型的函数
x = 5
print(type(x)) # 输出:
作为所有类的元类(用于创建类)
MyClass = type('MyClass', bases, namespace)
类名字符串 ('MyClass')
作为新类的名称
通常与赋值给它的变量名相同(但不是必须的)
基类元组 (bases)
包含新类要继承的父类
如果为空元组 (),则默认继承 object
例如 (BaseClass,) 注意逗号表示这是元组
命名空间字典 (namespace)
包含类的属性和方法
字典键是属性/方法名
字典值是属性值或函数定义
# 使用 type 动态创建类
MyClass = type('MyClass', (), {'x': 10})
obj = MyClass()
print(obj.x) # 输出: 10
切片是 Python 中一种强大而灵活的操作,用于从序列类型(如列表、字符串、元组等)中提取子序列
语法
[start,end,步长]
举例
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 获取索引2到5(不包含)的元素
print(nums[2:5]) # 输出: [2, 3, 4]
# 从开始到索引4(不包含)
print(nums[:4]) # 输出: [0, 1, 2, 3]
# 从索引6到末尾
print(nums[6:]) # 输出: [6, 7, 8, 9]
# 获取所有元素,步长为2
print(nums[::2]) # 输出: [0, 2, 4, 6, 8]
# 获取最后3个元素
print(nums[-3:]) # 输出: [7, 8, 9]
# 从第3个元素到倒数第2个元素
print(nums[2:-1]) # 输出: [2, 3, 4, 5, 6, 7, 8]
# 反转列表
print(nums[::-1]) # 输出: [5, 4, 3, 2, 1, 0]
# 从索引4到索引1,步长-1
print(nums[4:1:-1]) # 输出: [4, 3, 2]
f:
格式化字符串,允许在字符串中直接嵌入变量或表达式
r:
取消转义字符(如 \n、\t)的特殊含义,字符串内容保持原样。
常用于 正则表达式、文件路径、Windows 路径 等需要大量反斜杠 \ 的场景
b:
表示 字节序列(bytes) 而非普通字符串(str)
用于 二进制数据操作(如文件读写、网络传输)
属性
类属性
变量
实例属性
实例方法中,self.变量(__init__)
方法
实例方法
第一个参数self
类方法
@classmethod装饰,第一个参数为(cls)
静态方法
@staticmethod装饰
实例化
类名(参数1,参数2)
调用
obj.属性名
obj.方法名
装饰器是 Python 中一种强大的语法特性,它允许你在不修改原函数代码的情况下,动态地扩展函数的功能
用法
@decorator
def func()
等价于
func=decorator(func)
创建
def decorator(Func):
def w():
功能加强
调func
return
return w
继承是面向对象编程(OOP)的三大特性之一(封装、继承、多态),它允许我们基于已有的类创建新类,新类会自动获得父类的属性和方法,并可以添加自己的新特性
语法
class ParentClass:
# 父类属性和方法
pass
class ChildClass(ParentClass): # 继承ParentClass
# 子类特有的属性和方法
pass
可重写父类方法
super()调用父类的方法、属性
算术运算符
+、-、*、/、//、%、**
逻辑运算符
<、>、>=、<=、!=、==、not、and、or、in、is
str、list、tuple、dict、bytes、set
如何判断是否可迭代?
用iter(),报错就不可迭代
is判断对象
==判断值
len
返回对象的长度(元素个数),适用于字符串、列表、元组、字典、集合等可迭代对象
len(object)
输出内容到控制台,可以打印字符串、变量、表达式等
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects:要打印的内容,多个值用逗号分隔。
sep:分隔符(默认是空格)。
end:结束符(默认是换行 \n)。
file:输出目标(默认是标准输出 sys.stdout)。
flush:是否强制刷新缓冲区(默认 False)
input
从用户输入读取一行字符串(默认返回 str 类型)
input(prompt)
prompt:可选,提示信息(显示在输入前)
type
返回对象的类型(如 int、str、list 等)
type(object)
isinstance
检查对象是否是指定类型(或元组中任一类型)
isinstance(object, classinfo)
num = 10
print(isinstance(num, int)) # True
print(isinstance(num, (int, float))) # True
hash
返回对象的哈希值
range
生成不可变的整数序列
range(start, stop, step)
max/min
返回可迭代对象中的最大值/最小值
zip
将多个可迭代对象打包成元组迭代器
zip(*iterables)
names = ["Alice", "Bob"]
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age) # Alice 25, Bob 30
filter
过滤可迭代对象,保留满足条件的元素
filter(function, iterable)
nums = [1, 2, 3, 4]
even = filter(lambda x: x % 2 == 0, nums)
print(list(even)) # [2, 4]
sorted
返回排序后的新列表(原对象不变)
sorted(iterable, *, key=None, reverse=False)
nums = [3, 1, 4]
print(sorted(nums)) # [1, 3, 4]
print(sorted(nums, reverse=True)) # [4, 3, 1]
传参
(1)直接传值
(2)传键值对k=v
(3)混合用k=v放后面
入参
位置参数:必传
默认参数:可以不传
可变参数:*args,元组,不传是空元组
关键字:**kwargs,字典
def func(位置,可变,默认,关键字)
return
(1)返回单个、多个(元组)
(2)结束当前函数执行
(3)若无return返回None
高阶函数
函数入参或值是一个函数
生成器是 Python 中一种特殊的迭代器,它允许你按需生成值而不是一次性计算并存储所有值,从而节省内存并提高效率
(1)包含yield的函数
(2)调用含yield的函数会返回生成器而不是结果
(3)g函数有yield,用next(g)多次调到执行完为止,每次到yield都会停下来
列表生成器(又称列表推导式)是 Python 中一种简洁高效的创建列表的方式,它可以用一行代码替代传统的多行循环语句来生成列表
语法
[expression for item in iterable]
expression:对 item 的处理表达式(可以是变量、函数调用、运算等)。
item:迭代变量,取自可迭代对象 iterable(如列表、字符串、range 等)
# 生成 0~9 的平方列表
例如
# 传统方式
squares = []
for x in range(5):
squares.append(x**2)
#列表生成器方式
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
举例:
# 生成 0~9 的平方列表
squares = [x ** 2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 将字符串转为大写
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words]
print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']
if
if condition1:
# 条件1成立时执行
elif condition2:
# 条件2成立时执行
else:
# 其他情况执行
for
for item in iterable:
# 循环体
else:
# 循环正常结束后执行(非 `break` 退出时)
while
while condition:
# 循环体
else:
# 条件变为 False 后执行(非 `break` 退出时)
LEGB
局部作用域(Local, L):函数或方法内部。
闭包作用域(Enclosing, E):嵌套函数的外层作用域。
全局作用域(Global, G):模块(文件)级别。
内置作用域(Built-in, B):Python 内置变量(如 print, len)
标准库
from *** import ***(变量、函数、方法)
第三方
from 包 import 模块 as 名字
注意:
(1)被引入的模块都会执行
(2)引入语句放文件顶部
(3)pythonPath的路径引导寻找包
try:
# 可能引发异常的代码
except ExceptionType as e:
# 处理特定异常
except (ExceptionType1, ExceptionType2) as e:
# 处理多个异常
except:
# 捕获所有其他异常(不推荐,应明确指定异常类型)
else:
# 如果没有异常发生,执行此块
finally:
# 无论是否发生异常,都会执行此块(常用于清理资源)
raise ExceptionType("错误信息") # 抛出指定类型的异常
语法错误:代码不符合 Python 语法规则
SyntaxError: expected ‘:’
缩进错误:缩进不正确(常见于 if、for、def 等代码块)
IndentationError: expected an indented block
名称错误:尝试访问未定义的变量或函数。
NameError: name ‘unknown_var’ is not defined
类型错误:操作或函数应用于不适当类型的对象
TypeError: can only concatenate str (not “int”) to str
断言错误
AssertionError: x 应该等于 20
除零错误
ZeroDivisionError: division by zero
索引错误:访问列表、元组或字符串时,索引超出范围
IndexError: list index out of range
键错误:访问字典中不存在的键
KeyError: ‘age’
值错误:函数接收到正确类型但无效的值
ValueError: invalid literal for int() with base 10: ‘abc’
属性错误:尝试访问对象不存在的属性或方法
AttributeError: ‘str’ object has no attribute ‘append’
文件未找到错误
FileNotFoundError: [Errno 2] No such file or directory: ‘nonexistent.txt’
导入错误:导入不存在的模块或模块中的对象
ModuleNotFoundError: No module named ‘non_existent_module’
ImportError: cannot import name ‘non_existent_function’ from ‘math’
递归错误:递归深度超过最大限制(默认 1000 层)
RecursionError: maximum recursion depth exceeded
内存不足:程序内存不足
MemoryError
超时错误:某些操作超时
TimeoutError: Request timed out
语法
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file 文件路径(字符串或字节串) 必填
mode 文件打开模式(如 'r' 只读,'w' 写入等) 'r'
encoding 文件编码(如 'utf-8'、'gbk') None
errors 编码错误处理方式(如 'ignore' 忽略错误,'strict' 抛出异常) None
newline 控制换行符(如 None、'\n'、'\r\n') None
打开模式
'r' 只读(默认模式) 报错
'w' 写入(覆盖已有内容) 创建新文件
'a' 追加(在文件末尾写入) 创建新文件
'x' 独占创建(文件必须不存在) 报错
'b' 二进制模式(如 'rb'、'wb') -
't' 文本模式(默认) -
'+' 读写模式(如 'r+' 可读可写,'w+' 可读可写并清空文件) -
常用方法
file.read(size) 读取 size 字节(不指定则读取全部)
file.readline() 读取一行(包括 \n)
file.readlines() 读取所有行,返回列表(每行一个元素)
file.write(str) 写入字符串(返回写入的字符数)
file.writelines(list) 写入字符串列表(不会自动加换行符)
file.seek(offset) 移动文件指针到 offset 字节处(如 file.seek(0) 回到文件开头)
file.tell() 返回当前文件指针位置
file.close() 关闭文件(with 语句可自动调用)
(1)json转dict
json.loads()
(2)dict转json
json.dumps()