Python常用类研究探讨

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代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一剑的CS_DN博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值