1. 可变与不可变对象
在 Python 中,某些对象是不可变的(如 int
、str
、tuple
),而某些对象是可变的(如 list
、dict
).理解这一点对于避免意外修改数据非常重要.
示例:
# 不可变对象
x = 10
def change_value(a):
a += 5
print(f"在函数内 a 的值: {a}")
change_value(x)
print(f"函数外 x 的值: {x}")
# 可变对象
lst = [1, 2, 3]
def modify_list(l):
l.append(4)
print(f"在函数内 l 的值: {l}")
modify_list(lst)
print(f"函数外 lst 的值: {lst}")
解释:
-
不可变对象(如整数)在函数内部修改时,会生成一个新的对象,原始对象不变.
-
可变对象(如列表)在函数内部修改时,会直接影响原始对象.
2. 装饰器的使用
装饰器用于修改函数的行为.它常用于日志记录、权限校验、性能测量等.
示例:
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"正在调用函数 {func.__name__}")
result = func(*args, **kwargs)
print(f"函数 {func.__name__} 调用结束")
return result
return wrapper
@log_decorator
def say_hello(name):
print(f"Hello, {name}!")
say_hello("Alice")
解释:
-
装饰器本质是一个函数,它接受一个函数作为参数,并返回一个新的函数.
-
使用
@decorator_name
语法,可以方便地应用装饰器.
3. 迭代器与生成器
迭代器和生成器是处理大量数据时的高效工具.
示例:
# 生成器
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
for num in fibonacci(5):
print(num)
解释:
-
生成器使用
yield
关键字生成数据,每次调用时暂停并返回一个值,直到数据生成完毕. -
与一次性加载所有数据的列表不同,生成器节省内存.
4. Python 的垃圾回收机制
Python 使用引用计数和垃圾回收机制管理内存.循环引用可能会导致问题.
示例:
import gc
class Node:
def __init__(self, value):
self.value = value
self.next = None
a = Node(1)
b = Node(2)
a.next = b
b.next = a # 循环引用
del a, b
gc.collect() # 强制垃圾回收
解释:
-
循环引用(如
a
和b
的next
指向彼此)不会通过引用计数回收,需要依赖垃圾回收器.
5. 多线程与多进程
Python 的 GIL
限制了多线程的性能,适合 I/O 密集型任务,而多进程适合 CPU 密集型任务.
示例:
import threading
import multiprocessing
def task(name):
print(f"{name} 正在执行")
# 多线程
thread = threading.Thread(target=task, args=("线程",))
thread.start()
thread.join()
# 多进程
process = multiprocessing.Process(target=task, args=("进程",))
process.start()
process.join()
解释:
-
多线程适合 I/O 操作(如网络请求).
-
多进程可以充分利用多核 CPU.
6. 闭包与变量作用域
闭包是指函数内部定义的函数可以引用外部函数的局部变量.
示例:
def outer_function(msg):
def inner_function():
print(f"消息: {msg}")
return inner_function
closure = outer_function("Hello")
closure()
解释:
-
内部函数
inner_function
引用了外部函数outer_function
的变量msg
,即形成了闭包.
7. 类的继承与多态
Python 支持多继承和动态方法调用.
示例:
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("汪汪")
class Cat(Animal):
def speak(self):
print("喵喵")
animals = [Dog(), Cat()]
for animal in animals:
animal.speak()
解释:
-
通过继承,子类可以覆盖父类的方法,实现多态.
8. 元类与自定义类
元类控制类的创建行为.
示例:
class MyMeta(type):
def __new__(cls, name, bases, dct):
print(f"正在创建类 {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=MyMeta):
pass
解释:
-
元类通过控制类的创建,可以动态修改类的行为.
9. 异步编程
异步编程可以提升并发性能,常用 asyncio
模块.
示例:
import asyncio
async def async_task():
print("任务开始")
await asyncio.sleep(1)
print("任务结束")
asyncio.run(async_task())
解释:
-
使用
async
定义异步函数,await
用于等待耗时操作.
10. 数据结构与算法
Python 提供内置的数据结构(如列表、字典)以及模块(如 collections
).
示例:
from collections import Counter
data = ["apple", "banana", "apple", "orange"]
counter = Counter(data)
print(counter.most_common(1))
解释:
-
collections.Counter
是统计元素频率的有力工具. -
熟练掌握数据结构和算法可以显著提升代码效率.
最后,我精心筹备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步!
🌟 学习大礼包包含内容:
Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。
超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。
实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。
华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。
互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。
👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能