Python常用类研究探讨
Python提供了许多内置类,这些类是Python编程的基础。下面我将详细介绍一些最常用的Python类及其主要功能。
1. 基本数据类型类
1.1 int - 整数类
# 创建整数
x = 10
y = int("20") # 字符串转整数
# 常用方法
print(x.bit_length()) # 返回表示该数的二进制位数
print((1024).to_bytes(2, byteorder='big')) # 转换为字节表示
1.2 float - 浮点数类
# 创建浮点数
x = 3.14
y = float("2.718") # 字符串转浮点数
# 常用方法
print(x.is_integer()) # 检查是否为整数
print(float.as_integer_ratio(3.75)) # 返回分数表示 (15, 4)
1.3 bool - 布尔类
# 创建布尔值
t = True
f = False
# 布尔运算
print(True and False) # False
print(True or False) # True
print(not True) # False
1.4 str - 字符串类
# 创建字符串
s = "Hello, World!"
s = str(123) # 其他类型转字符串
# 常用方法
print(s.lower()) # 转为小写
print(s.upper()) # 转为大写
print(s.split(',')) # 分割字符串 ['Hello', ' World!']
print(s.replace('H', 'h')) # 替换
print(s.find('World')) # 查找子串位置
print(s.isdigit()) # 检查是否全为数字
print(s.strip()) # 去除两端空白
2. 容器类
2.1 list - 列表类
# 创建列表
lst = [1, 2, 3]
lst = list("abc") # ['a', 'b', 'c']
# 常用方法
lst.append(4) # 添加元素 [1, 2, 3, 4]
lst.extend([5,6]) # 扩展列表 [1, 2, 3, 4, 5, 6]
lst.insert(0, 0) # 在指定位置插入 [0, 1, 2, 3, 4, 5, 6]
lst.remove(3) # 移除第一个匹配项 [0, 1, 2, 4, 5, 6]
lst.pop() # 移除并返回最后一个元素 6
lst.index(4) # 返回元素索引 3
lst.count(1) # 计算元素出现次数 1
lst.sort() # 排序
lst.reverse() # 反转
lst.clear() # 清空列表
2.2 tuple - 元组类
# 创建元组
t = (1, 2, 3)
t = tuple([1, 2, 3]) # 列表转元组
# 常用方法
print(t.index(2)) # 返回元素索引 1
print(t.count(3)) # 计算元素出现次数 1
2.3 dict - 字典类
# 创建字典
d = {'name': 'Alice', 'age': 25}
d = dict(name='Bob', age=30)
# 常用方法
d.keys() # 返回所有键
d.values() # 返回所有值
d.items() # 返回所有键值对
d.get('name') # 获取键对应的值
d.pop('age') # 移除并返回指定键的值
d.update({'city': 'New York'}) # 更新字典
d.clear() # 清空字典
2.4 set - 集合类
# 创建集合
s = {1, 2, 3}
s = set([1, 2, 2, 3]) # {1, 2, 3}
# 常用方法
s.add(4) # 添加元素
s.remove(3) # 移除元素,不存在则报错
s.discard(5) # 移除元素,不存在不报错
s.pop() # 随机移除并返回一个元素
s.clear() # 清空集合
# 集合运算
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # 并集 {1, 2, 3, 4}
print(a & b) # 交集 {2, 3}
print(a - b) # 差集 {1}
print(a ^ b) # 对称差集 {1, 4}
3. 其他常用类
3.1 datetime - 日期时间类
from datetime import datetime, date, time, timedelta
# 当前时间
now = datetime.now()
print(now) # 2023-05-15 14:30:00.123456
# 创建特定日期时间
dt = datetime(2023, 5, 15, 14, 30)
d = date(2023, 5, 15)
t = time(14, 30)
# 常用方法
print(dt.year, dt.month, dt.day) # 2023 5 15
print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 格式化输出
# 时间运算
delta = timedelta(days=7)
print(now + delta) # 一周后的时间
3.2 collections - 容器扩展类
from collections import defaultdict, Counter, deque, namedtuple
# defaultdict - 带默认值的字典
dd = defaultdict(int)
dd['a'] += 1 # {'a': 1}
# Counter - 计数器
c = Counter('abracadabra')
print(c.most_common(3)) # [('a', 5), ('b', 2), ('r', 2)]
# deque - 双端队列
d = deque([1, 2, 3])
d.appendleft(0) # [0, 1, 2, 3]
d.pop() # 移除并返回右侧元素 3
# namedtuple - 命名元组
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, y=22)
print(p.x, p.y) # 11 22
3.3 re - 正则表达式类
import re
# 匹配
pattern = r'\d+'
text = 'There are 123 apples and 456 oranges'
match = re.search(pattern, text)
if match:
print(match.group()) # 123
# 查找所有
matches = re.findall(pattern, text) # ['123', '456']
# 替换
new_text = re.sub(pattern, 'NUM', text) # 'There are NUM apples and NUM oranges'
# 分割
parts = re.split(r'\s+', text) # ['There', 'are', '123', 'apples', 'and', '456', 'oranges']
3.4 pathlib.Path - 路径操作类
from pathlib import Path
# 创建路径对象
p = Path('/home/user/documents')
# 常用方法
print(p.exists()) # 检查路径是否存在
print(p.is_file()) # 检查是否为文件
print(p.is_dir()) # 检查是否为目录
print(p.name) # 获取文件名 'documents'
print(p.parent) # 获取父目录 '/home/user'
print(p.suffix) # 获取后缀名
# 路径操作
new_p = p / 'file.txt' # 路径拼接
new_p.write_text('Hello') # 写入文件
print(new_p.read_text()) # 读取文件内容
4. 自定义类
Python允许自定义类,使用class
关键字:
class Person:
# 类属性
species = 'Homo sapiens'
# 初始化方法
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
# 实例方法
def greet(self):
return f"Hello, my name is {self.name}"
# 类方法
@classmethod
def from_birth_year(cls, name, birth_year):
age = datetime.now().year - birth_year
return cls(name, age)
# 静态方法
@staticmethod
def is_adult(age):
return age >= 18
# 使用类
p1 = Person("Alice", 25)
print(p1.greet()) # Hello, my name is Alice
p2 = Person.from_birth_year("Bob", 1990)
print(p2.age) # 当前年份-1990
print(Person.is_adult(20)) # True
5. 特殊方法
Python类可以通过实现特殊方法(魔术方法)来自定义行为:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __str__(self):
return f"Vector({self.x}, {self.y})"
def __len__(self):
return 2
def __getitem__(self, key):
if key == 0:
return self.x
elif key == 1:
return self.y
else:
raise IndexError("Vector index out of range")
# 使用
v1 = Vector(2, 4)
v2 = Vector(1, 3)
print(v1 + v2) # Vector(3, 7)
print(len(v1)) # 2
print(v1[0]) # 2
以上是Python中最常用的一些类及其基本用法。掌握这些类的使用是Python编程的基础,可以帮助你更高效地编写Python代码。