当前位置: 首页 > wzjs >正文

义乌营销型网站建设微信营销怎么做

义乌营销型网站建设,微信营销怎么做,莱州市做网站的公司,app如何推广以及推广渠道1.2.2 高级特性详解(Django 基础学习细节) Python 的高级特性如装饰器、生成器、迭代器和上下文管理器,是提升代码复用性、灵活性和可维护性的利器。Django 中间件、视图、ORM等大量用到这些技术。下面详细讲解每一项,并给出丰富代…

1.2.2 高级特性详解(Django 基础学习细节)

Python 的高级特性如装饰器、生成器、迭代器和上下文管理器,是提升代码复用性、灵活性和可维护性的利器。Django 中间件、视图、ORM等大量用到这些技术。下面详细讲解每一项,并给出丰富代码示例。

一、装饰器(Decorator)

装饰器是对函数或类进行“包装”以增强功能的语法,常用于日志、权限、缓存、性能统计等场景。

1. 函数装饰器

1.1 基本函数装饰器
def my_decorator(func):def wrapper(*args, **kwargs):print("函数开始执行")result = func(*args, **kwargs)print("函数执行结束")return resultreturn wrapper@my_decorator
def greet(name):print(f"Hello, {name}")greet("Alice")
# 输出:
# 函数开始执行
# Hello, Alice
# 函数执行结束
1.2 多个装饰器(从下往上执行)
def deco1(func):def wrapper(*args, **kwargs):print("deco1")return func(*args, **kwargs)return wrapperdef deco2(func):def wrapper(*args, **kwargs):print("deco2")return func(*args, **kwargs)return wrapper@deco1
@deco2
def foo():print("foo body")foo()
# 输出:
# deco1
# deco2
# foo body
1.3 保持原函数元数据(推荐用 functools.wraps)
import functoolsdef log(func):@functools.wraps(func)def wrapper(*args, **kwargs):print(f"call {func.__name__}")return func(*args, **kwargs)return wrapper@log
def add(a, b):"Adds two numbers"return a + bprint(add.__name__)      # add
print(add.__doc__)       # Adds two numbers

2. 参数化装饰器(带参数的装饰器)

def repeat(n):def decorator(func):def wrapper(*args, **kwargs):for _ in range(n):func(*args, **kwargs)return wrapperreturn decorator@repeat(3)
def hi():print("Hi!")hi()
# 输出三次 Hi!

3. 类装饰器

  • 用类实现装饰器,适合复杂状态管理
class Counter:def __init__(self, func):self.func = funcself.count = 0def __call__(self, *args, **kwargs):self.count += 1print(f"调用次数: {self.count}")return self.func(*args, **kwargs)@Counter
def show(name):print(f"Hello, {name}")show("Tom")  # 调用次数: 1
show("Ann")  # 调用次数: 2

二、生成器与 yield、迭代器

1. 生成器函数(yield)

  • yield 返回一个生成器对象,能“惰性”产出数据,节省内存。
def count_up(n):i = 1while i <= n:yield ii += 1gen = count_up(3)
print(next(gen))  # 1
print(next(gen))  # 2
print(next(gen))  # 3
# next(gen)  # StopIteration异常
1.1 用 for 遍历生成器
for num in count_up(5):print(num)
# 输出 1 2 3 4 5

2. 列表生成 vs 生成器表达式

lst = [x*x for x in range(1000)]     # 占用大量内存
gen = (x*x for x in range(1000))     # 生成器,内存高效for val in gen:print(val)

3. 自定义迭代器

  • 实现 __iter____next__ 方法
class MyRange:def __init__(self, start, end):self.cur = startself.end = enddef __iter__(self):return selfdef __next__(self):if self.cur < self.end:val = self.curself.cur += 1return valelse:raise StopIterationfor i in MyRange(10, 13):print(i)
# 输出: 10 11 12

三、上下文管理器(with 语法)、自定义

1. 内建上下文管理器:文件操作

with open("test.txt", "w") as f:f.write("hello world")
# 自动关闭文件,无需手动 f.close()

2. 自定义上下文管理器(类实现)

  • 需实现 __enter____exit__ 方法
class MyContext:def __enter__(self):print("进入上下文")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("离开上下文")with MyContext():print("处理中")
# 输出:
# 进入上下文
# 处理中
# 离开上下文

3. 异常处理

  • __exit__ 接收异常信息,能决定是否吞掉异常
class SafeOpen:def __init__(self, filename):self.filename = filenameself.file = Nonedef __enter__(self):self.file = open(self.filename, "w")return self.filedef __exit__(self, exc_type, exc_val, exc_tb):self.file.close()if exc_type:print(f"发生异常: {exc_val}")return True  # 异常不再向外抛出with SafeOpen("demo.txt") as f:f.write("Hello")raise Exception("测试异常")
# 输出: 发生异常: 测试异常

4. 使用 contextlib 简化上下文管理器

from contextlib import contextmanager@contextmanager
def tag(name):print(f"<{name}>")yieldprint(f"</{name}>")with tag("div"):print("这是内容")
# 输出:
# <div>
# 这是内容
# </div>

四、实用小结

  • 装饰器让函数/类扩展更灵活,Django 中间件、权限控制大量用到
  • 生成器和迭代器能处理大数据流,节省内存,Django QuerySet 就是惰性迭代器
  • 上下文管理器保证资源安全释放,是处理文件、数据库连接等场景的最佳选择
  • 推荐掌握各类高级特性,可在实际项目中写出更优雅、可维护的代码
http://www.dtcms.com/wzjs/500017.html

相关文章:

  • 俄语培训网站建设seo托管公司
  • 怎样在建设厅网站查询安全员证谷歌关键词查询工具
  • 江苏天目建设网站短链接在线生成免费
  • 湖南做网站哪家好东莞网站优化
  • 重庆有哪些做网站公司好seo数据
  • 网站开发浏览器包微信推广文案
  • 请人开发一个网站需要多少钱长沙疫情最新情况
  • 用rp怎样做网站aso优化重要吗
  • 网站的专题模板制作软件网站服务器搭建与管理
  • 写作网站投稿哪个好百度风云榜热搜
  • 做网站算运营吗个人网站怎么制作
  • 高端网站设计一般多少钱nba排名2021最新排名
  • 企业网站建设绪论宁德市属于哪个省
  • 婚纱网站论文杭州市优化服务
  • 网站建设销售还能做吗seo排名优化技术
  • 印象网站建设提高工作效率图片
  • 呼伦贝尔市规划建设局网站自己的网站怎么推广
  • 旅行社b2b网站建设方案百度网站统计
  • 湛江网站制作公司关键词采集软件
  • 一流的商城网站建设百度网页版入口链接
  • wordpress blog 插件淘宝seo搜索引擎优化
  • 怎么在网上创建网站常用的seo工具的是有哪些
  • 哈尔滨网站开发建设公司怎么建网站教程图解
  • 品牌网站建设优化公司排名网络推广属于什么专业
  • 贵州做网站的公司免费cms建站系统
  • wordpress缩略图题目文本链接seo网站排名全选
  • 深圳网站开发怎么样cpa游戏推广联盟
  • 织梦网站怎么做优化厦门百度seo排名
  • 手机app开发网站模板下载百度搜索关键词排名靠前
  • 福州成人高考网站无锡seo排名收费