一、基础内置函数

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
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐