一、基础内置函数
1. 数据类型转换
int("123") # 123 float("3.14") # 3.14 str(123) # "123" bool(0) # False list("abc") # ['a', 'b', 'c'] tuple([1, 2, 3]) # (1, 2, 3) dict([('a', 1)]) # {'a': 1} set([1, 2, 2, 3]) # {1, 2, 3} chr(65) # 'A' ord('A') # 65 hex(255) # '0xff' oct(8) # '0o10' bin(5) # '0b101'
2. 数学运算
abs(-5) # 5 divmod(10, 3) # (3, 1) pow(2, 3) # 8 pow(2, 3, 5) # 3 (2³ mod 5) round(3.14159, 2) # 3.14 sum([1, 2, 3]) # 6 min([1, 2, 3]) # 1 max([1, 2, 3]) # 3
3. 输入输出
print("Hello", "World") # Hello World print("Value:", 10, sep=", ") # Value:, 10 input("Enter your name: ") # 获取用户输入
4. 序列操作
len([1, 2, 3]) # 3 range(5) # range(0, 5) list(range(1, 10, 2)) # [1, 3, 5, 7, 9] sorted([3, 1, 2]) # [1, 2, 3] sorted([3, 1, 2], reverse=True) # [3, 2, 1] reversed([1, 2, 3]) # 返回迭代器 list(reversed([1, 2, 3])) # [3, 2, 1] enumerate(['a', 'b', 'c']) # 返回(0,'a'), (1,'b'), (2,'c') list(enumerate(['a', 'b', 'c'], start=1)) # [(1,'a'), (2,'b'), (3,'c')] zip([1, 2, 3], ['a', 'b', 'c']) # 返回(1,'a'), (2,'b'), (3,'c')
5. 条件判断
all([True, True, False]) # False (所有为True) any([False, True, False]) # True (任一为True)
6. 对象和属性
type(123) # <class 'int'> isinstance(123, int) # True id([1, 2]) # 返回对象内存地址 callable(print) # True hasattr([1, 2], 'append') # True getattr([1, 2], 'append') # 返回append方法
二、字符串处理
字符串方法
s = "Hello World" s.upper() # "HELLO WORLD" s.lower() # "hello world" s.title() # "Hello World" s.capitalize() # "Hello world" s.startswith("Hello") # True s.endswith("World") # True s.find("World") # 6 s.index("World") # 6 s.count("l") # 3 s.replace("World", "Python") # "Hello Python" " hello ".strip() # "hello" " hello ".lstrip() # "hello " " hello ".rstrip() # " hello" "a,b,c".split(",") # ['a', 'b', 'c'] " ".join(['a', 'b']) # "a b" "hello".isalpha() # True "123".isdigit() # True "abc123".isalnum() # True " ".isspace() # True "hello".islower() # True "HELLO".isupper() # True
格式化字符串
name = "Alice" age = 25 f"My name is {name} and I'm {age} years old." # f-string "My name is {} and I'm {} years old.".format(name, age) # format "My name is %s and I'm %d years old." % (name, age) # %格式化
三、列表/数组操作
列表方法
lst = [1, 2, 3] lst.append(4) # [1, 2, 3, 4] lst.extend([5, 6]) # [1, 2, 3, 4, 5, 6] lst.insert(1, 1.5) # [1, 1.5, 2, 3, 4, 5, 6] lst.remove(1.5) # [1, 2, 3, 4, 5, 6] lst.pop() # 返回6, lst变为[1, 2, 3, 4, 5] lst.pop(0) # 返回1, lst变为[2, 3, 4, 5] lst.index(3) # 1 lst.count(2) # 1 lst.sort() # 升序排序 lst.sort(reverse=True) # 降序排序 lst.reverse() # 反转列表 lst.clear() # []
列表推导式
[i*2 for i in range(5)] # [0, 2, 4, 6, 8] [i for i in range(10) if i%2==0] # [0, 2, 4, 6, 8] [(x, y) for x in [1,2] for y in [3,4]] # [(1,3), (1,4), (2,3), (2,4)]
四、字典操作
字典方法
d = {'a': 1, 'b': 2} d.keys() # dict_keys(['a', 'b']) d.values() # dict_values([1, 2]) d.items() # dict_items([('a', 1), ('b', 2)]) d.get('a') # 1 d.get('c', 0) # 0 (c不存在,返回默认值0) d.setdefault('c', 3) # 设置c=3,c不存在时 d.pop('a') # 1,删除并返回 d.popitem() # 删除并返回最后一对 d.update({'c': 3}) # {'a': 1, 'b': 2, 'c': 3} d.clear() # {}
字典推导式
{x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16} {k.upper(): v*2 for k, v in {'a':1, 'b':2}.items()} # {'A':2, 'B':4}
五、集合操作
集合方法
s = {1, 2, 3} s.add(4) # {1, 2, 3, 4} s.remove(2) # {1, 3, 4} s.discard(5) # 删除5,不存在时不报错 s.pop() # 随机删除一个并返回 s.clear() # set() s.update([4, 5, 6]) # 添加多个元素
集合运算
a = {1, 2, 3} b = {3, 4, 5} a.union(b) # {1, 2, 3, 4, 5} a.intersection(b) # {3} a.difference(b) # {1, 2} a.symmetric_difference(b) # {1, 2, 4, 5}
六、数学函数(math模块)
import math math.ceil(3.2) # 4 (向上取整) math.floor(3.8) # 3 (向下取整) math.trunc(3.8) # 3 (截断) math.fabs(-3.14) # 3.14 (绝对值,返回浮点) math.sqrt(16) # 4.0 math.pow(2, 3) # 8.0 math.exp(1) # 2.718... (e^1) math.log(10) # 2.302... (自然对数) math.log10(100) # 2.0 math.sin(math.pi/2) # 1.0 math.cos(0) # 1.0 math.degrees(math.pi) # 180.0 math.radians(180) # 3.14159... math.gcd(12, 8) # 4 (最大公约数) math.lcm(12, 8) # 24 (最小公倍数,Python 3.9+) math.comb(5, 2) # 10 (组合数) math.perm(5, 2) # 20 (排列数)
七、随机数(random模块)
import random random.random() # [0.0, 1.0) 的随机浮点数 random.uniform(1, 10) # [1, 10) 的随机浮点数 random.randint(1, 10) # [1, 10] 的随机整数 random.randrange(1, 10, 2) # 1,3,5,7,9 中随机 random.choice(['a', 'b', 'c']) # 随机选择元素 random.choices(['a', 'b', 'c'], k=2) # 有放回抽样 random.sample([1,2,3,4,5], k=3) # 无放回抽样 random.shuffle([1,2,3,4]) # 打乱列表
八、日期时间(datetime模块)
from datetime import datetime, date, time, timedelta # 当前时间 now = datetime.now() today = date.today() # 创建日期时间 dt = datetime(2023, 12, 25, 10, 30, 0) d = date(2023, 12, 25) t = time(10, 30, 0) # 格式化 now.strftime("%Y-%m-%d %H:%M:%S") # 日期转字符串 datetime.strptime("2023-12-25", "%Y-%m-%d") # 字符串转日期 # 时间运算 now + timedelta(days=1) # 加1天 now - timedelta(hours=2) # 减2小时 # 获取属性 now.year, now.month, now.day now.hour, now.minute, now.second now.weekday() # 0-6 周一为0
九、文件操作
# 读取文件 with open('file.txt', 'r', encoding='utf-8') as f: content = f.read() # 读取全部 lines = f.readlines() # 读取所有行 line = f.readline() # 读取一行 for line in f: # 逐行读取 print(line.strip()) # 写入文件 with open('file.txt', 'w') as f: f.write("Hello\n") f.writelines(["Line1\n", "Line2\n"]) # 追加模式 with open('file.txt', 'a') as f: f.write("Appended text\n")
十、高级函数
迭代器工具
# map: 对每个元素应用函数 list(map(lambda x: x**2, [1, 2, 3])) # [1, 4, 9] # filter: 过滤元素 list(filter(lambda x: x > 0, [-2, -1, 0, 1, 2])) # [1, 2] # reduce: 累积运算 from functools import reduce reduce(lambda x, y: x + y, [1, 2, 3, 4]) # 10 # zip: 并行迭代 names = ['Alice', 'Bob'] scores = [90, 85] dict(zip(names, scores)) # {'Alice': 90, 'Bob': 85}
lambda表达式
add = lambda x, y: x + y add(3, 4) # 7 # 常用场景 sorted([('a', 3), ('b', 1), ('c', 2)], key=lambda x: x[1]) # 按第二个元素排序
十一、装饰器
# 基本装饰器 def my_decorator(func): def wrapper(*args, **kwargs): print("Before function") result = func(*args, **kwargs) print("After function") return result return wrapper @my_decorator def say_hello(): print("Hello!") # 带参数的装饰器 def repeat(times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(times): result = func(*args, **kwargs) return result return wrapper return decorator @repeat(times=3) def greet(name): print(f"Hello {name}")
十二、类和对象
class Person: # 类属性 species = "Human" def __init__(self, name, age): # 实例属性 self.name = name self.age = age # 实例方法 def introduce(self): return f"I'm {self.name}, {self.age} years old." # 类方法 @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 # 使用 p = Person("Alice", 25) p.introduce() # "I'm Alice, 25 years old." Person.is_adult(20) # True
十三、错误处理
# 基本try-except try: x = 1 / 0 except ZeroDivisionError as e: print(f"Error: {e}") except (TypeError, ValueError) as e: print(f"Other error: {e}") except Exception as e: print(f"Unexpected error: {e}") else: print("No error occurred") finally: print("This always runs") # 抛出异常 if x < 0: raise ValueError("x must be non-negative") # 自定义异常 class MyError(Exception): pass
十四、上下文管理器
# 创建上下文管理器 from contextlib import contextmanager @contextmanager def my_context(): print("Entering context") yield print("Exiting context") with my_context(): print("Inside context") # 处理文件自动关闭 class FileManager: def __init__(self, filename, mode): self.filename = filename self.mode = mode def __enter__(self): self.file = open(self.filename, self.mode) return self.file def __exit__(self, exc_type, exc_val, exc_tb): self.file.close() with FileManager('test.txt', 'w') as f: f.write("Hello")
十五、性能分析
# 计时 import time start = time.time() # 执行代码 end = time.time() print(f"Time: {end - start} seconds") # 更精确计时 import timeit timeit.timeit('"-".join(str(n) for n in range(100))', number=10000) # 性能分析 import cProfile cProfile.run('your_function()')
十六、实用工具函数
# enumerate: 带索引的迭代 for i, value in enumerate(['a', 'b', 'c']): print(i, value) # 0 a, 1 b, 2 c # zip: 并行迭代多个序列 for name, score in zip(['Alice', 'Bob'], [90, 85]): print(name, score) # reversed: 反向迭代 for i in reversed(range(5)): print(i) # 4, 3, 2, 1, 0 # sorted: 排序 sorted([3, 1, 2]) # [1, 2, 3] sorted([3, 1, 2], reverse=True) # [3, 2, 1] # any/all: 条件判断 any(x > 0 for x in [-1, 0, 1]) # True all(x > 0 for x in [1, 2, 3]) # True