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

Python学习入门(1)——基础语句(二)

14. 迭代器和迭代协议

        在Python中,迭代器是支持迭代操作的对象,即它们可以一次返回其成员中的一个。任何实现了 __iter__()__next__() 方法的对象都是迭代器。

class Count:def __init__(self, low, high):self.current = lowself.high = highdef __iter__(self):return selfdef __next__(self):if self.current > self.high:raise StopIterationelse:self.current += 1return self.current - 1# 使用迭代器
for number in Count(1, 5):print(number)

15. 生成器

        生成器是一种特殊的迭代器,可以更方便地使用简单的函数来创建。通过使用关键字 yield,函数在每次生成值时将挂起其状态。

def countdown(n):while n > 0:yield nn -= 1# 使用生成器
for i in countdown(5):print(i)

16. 装饰器的进阶用法

        装饰器可以用来修改其他函数的行为,而且可以堆叠、参数化。

def decorator_with_args(number):def my_decorator(func):def wrapper(*args, **kwargs):print("Something is happening before the function is called.")result = func(*args, **kwargs)print("Something is happening after the function is called.")return result * numberreturn wrapperreturn my_decorator@decorator_with_args(3)
def add(x, y):return x + yprint(add(2, 3))

17. 异步编程(asyncio

        Python的 asyncio 模块用于编写单线程并发代码使用协程,适用于IO密集型应用。

import asyncioasync def main():print('Hello')await asyncio.sleep(1)print('world')asyncio.run(main())

18. 类型注解

        Python从3.5版本开始引入了类型提示(type hints),用于指示变量和函数参数、返回值的类型,有助于代码的可读性和可维护性。

from typing import List, Dictdef greet_all(names: List[str]) -> None:for name in names:print(f"Hello, {name}")greet_all(["Alice", "Bob", "Charlie"])

19. 元编程

        元编程是指在运行时创建或自定义代码的技术。Python提供了多种元编程工具,包括元类和装饰器。

元类(Metaclasses)

        元类是创建类的类,它们允许你拦截Python的类构造过程。通过定义一个元类,你可以修改类的定义。

class Meta(type):def __new__(cls, name, bases, class_dict):print("A class is defined with name:", name)return type.__new__(cls, name, bases, class_dict)class MyClass(metaclass=Meta):pass# 输出: A class is defined with name: MyClass

20. 动态属性和方法

        Python支持在运行时动态地添加或修改对象和类的属性和方法,这增加了代码的灵活性。

class DynamicClass:pass# 动态添加属性
obj = DynamicClass()
obj.new_attr = "Hello"
print(obj.new_attr)# 动态添加方法
import types
def dynamic_method(self):return "Dynamic Method Called"obj.dynamic_method = types.MethodType(dynamic_method, obj)
print(obj.dynamic_method())

21. 上下文管理器的高级用法

        除了基本的 with 语句用法外,你可以创建支持复杂逻辑的自定义上下文管理器。

class ManagedResource:def __enter__(self):print("Enter resource")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("Exit resource")if exc_type:print(f"An error occurred: {exc_val}")return True  # Suppress exceptionswith ManagedResource():raise Exception("Something went wrong!")
# Enter resource
# Exit resource
# An error occurred: Something went wrong!

22. 多进程与多线程

        Python支持多线程和多进程编程,这对于提高IO密集型和计算密集型应用的性能非常重要。

多进程
from multiprocessing import Processdef print_func(continent='Asia'):print('The name of continent is : ', continent)if __name__ == "__main__":  # Required for Windowsnames = ['America', 'Europe', 'Africa']procs = []proc = Process(target=print_func)  # Create a Processprocs.append(proc)proc.start()# Create a process for each namefor name in names:proc = Process(target=print_func, args=(name,))procs.append(proc)proc.start()# Complete the processesfor proc in procs:proc.join()
多线程
import threadingdef print_cube(num):print("Cube: {}".format(num * num * num))def print_square(num):print("Square: {}".format(num * num))if __name__ == "__main__":t1 = threading.Thread(target=print_square, args=(10,))t2 = threading.Thread(target=print_cube, args=(10,))t1.start()t2.start()t1.join()t2.join()

相关文章:

Python学习入门(1)——基础语句(二)

14. 迭代器和迭代协议 在Python中,迭代器是支持迭代操作的对象,即它们可以一次返回其成员中的一个。任何实现了 __iter__() 和 __next__() 方法的对象都是迭代器。 class Count:def __init__(self, low, high):self.current lowself.high highdef __i…...

vue 百度地图 使用 vue-baidu-map 进行当前位置定位和范围展示

vue 百度地图 使用 vue-baidu-map 进行当前位置定位和范围展示(考勤打卡) 一、创建百度地图账号,获取秘钥二、 引入插件1、安装vue-baidu-map2、在main.js中引入 三、 简单使用 最近写项目的时候,做到了考勤打卡的模块内容&#x…...

使用idea运行程序,发现控制台的中文出现乱码

修改UTF-8发现没有效果,寻找.idea文件夹的encodings.xml文件,将里面的UTF-8全部变成GBK....

基于javassm实现的大学生兼职信息系统

开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…...

O2OA开发平台如何查看数据表结构?

在访问后端api地址,页面最下方有列示平台的各个服务,点击进入可查看具体的表内容 后端api地址: http://{hostIP}/x_program_center/jest/list.html 其中:{hostIP}为中心服务器所在域名或者IP地址 如下图:...

心理测评性格测试矩阵版h5微信抖音QQ快手小程序app开源版开发

心理测评性格测试矩阵版h5微信抖音QQ快手小程序app开源版开发 支持SAAS、支持独立加密、支持独立开源、价格不同。 自带题库数据,后台一键初始,支持自己上传题目 心理测评 微信公众号微信小程序抖音小程序可打包APP 支持单题、跳跃题、计分题、因子题、…...

【蓝桥杯】十六进制转八进制 C++实现

1.题目信息 时间限制&#xff1a;1.0s 内存限制&#xff1a;512.0MB 问题描述 给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n &#xff08;1<n<10&#xff09;。 接下来n行&#xff0c;每行一个由09、大写字母AF组成…...

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…...

深入解析API技术:原理、实现与应用

在现代软件开发中&#xff0c;API&#xff08;应用程序接口&#xff09;扮演着至关重要的角色。API 允许不同的软件应用程序和系统之间进行通信和数据交换&#xff0c;从而构建出更加高效、灵活和可扩展的软件解决方案。本文将深入解析API技术的原理、实现方法&#xff0c;并附…...

C语言——数组指针变量

一、什么是数组指针 数组指针变量是指向数组的指针&#xff0c;它可以用来遍历数组元素、进行数组操作以及作为函数参数传递数组等操作。在C语言中&#xff0c;数组名本身就是数组的首地址&#xff0c;因此数组指针可以指向数组的首地址。 数组指针变量的基本形式&#xff1a…...

Redis的过期策略与内存淘汰机制原理及实践

Redis作为高性能的键值存储系统&#xff0c;其对数据过期与内存管理的设计直接影响到系统的性能与资源利用率。本文将以生动的比喻、通俗的语言&#xff0c;深入剖析Redis的过期策略与内存淘汰原理&#xff0c;助您全面理解数据在Redis中的生命周期管理艺术。 一、Redis过期策…...

【24届数字IC秋招总结】提前批面试经验1——小米、百度昆仑芯、长鑫存储

文章目录 前言一、小米-SOC验证工程师1.1 面试问题二、百度昆仑芯-芯片验证工程师2.1 一面面试问题2.2 二面面试问题三、长鑫存储-数字电路前言 提前批面试公司:小米、百度昆仑芯、长鑫存储 一、小米-SOC验证工程师 面试时间:7.23 周末 1.1 面试问题 1、 问研究生项目,自…...

第7章、ReactRedux 实战 - 登录注册验证;

一、登录注册认证系统课程介绍&#xff1b; 1、基本概念&#xff1b; &#xff1b; 2、代码&#xff1b; 二、搭建前端环境&#xff1b; 1、基本概念&#xff1b; &#xff1b; 2、代码&#xff1b; 三、搭建后端环境&#xff1b; 1、基本概念&#xff1b; &#xff1…...

16路HDMI+AV流媒体IPTV高清编码器JR-3216HD

产品简介&#xff1a; JR-3216HD 16路高清HDMIAV编码器是专业的高清音视频编码产品&#xff0c;该产品具有支持16路高清HDMI音视频采集功能&#xff0c;16路标清AV视频采集功能&#xff0c;16路3.5MM独立外接音频输入&#xff0c;编码输出双码流H.264格式&#xff0c;音频MP3/…...

vscode 配置文件settings.json和c_cpp_properties.json的作用

前言 在 Visual Studio Code (VSCode) 中&#xff0c;settings.json 和 c_cpp_properties.json 都是配置文件&#xff0c;它们分别用于不同的目的。 settings.json settings.json 文件是 VSCode 的用户或工作区设置文件。它允许你自定义 VSCode 的各种行为和外观。 用户设置…...

【postgresql 基础入门】入门教程成形了,八大章节,涵盖库,表,事务,约束,数据类型,聚集函数,轻松入门

Postgresql 基础入门 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 序言 Postg…...

【计算机毕业设计】人事管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…...

OceanBase V4.2 MySQL模式下,如何通过DBLINK实现跨数据源访问

概述 跨数据源访问可通过 DBLINK&#xff08;以下简称DBLINK&#xff09;实现&#xff0c;从而使得业务代码能够像访问本地数据库一样轻松访问远端数据库。原先&#xff0c;DBLINK主要服务于Oracle模式&#xff0c;但由于OceanBase 的MySQL模式租户同样存在访问远端数据库的需…...

再谈C语言——理解指针(一)

内存和地址 内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c; 如果想找到你&#xff0c;就得挨个房…...

day21-二叉树part08

235. 二叉搜索树的最近公共祖先 相对于 二叉树的最近公共祖先 本题就简单一些了&#xff0c;因为 可以利用二叉搜索树的特性无需全部遍历。特点&#xff1a;当前节点在p&#xff0c;q节点之前则必为最近公共祖先 class Solution {public TreeNode lowestCommonAncestor(TreeNo…...

导师推荐!盘点2026年最受欢迎的AI论文工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文工具全面升级&#xff0c;实测提速超50%&#xff0c;覆盖选题、文献分析、内容生成、降重润色、格式排版等全流程场景&#xff0c;真正帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;…...

滴滴盖亚计划ETA数据集实战:如何用Python处理智能交通数据(附完整代码)

滴滴盖亚ETA数据集实战&#xff1a;Python智能交通数据处理全流程解析 引言&#xff1a;智能交通时代的ETA技术价值 在早高峰的深圳深南大道上&#xff0c;网约车司机王师傅刚接单就面临抉择&#xff1a;系统推荐的三条路线中&#xff0c;哪一条能最快到达乘客上车点&#xf…...

OpenClaw+Qwen3.5-9B:3步搭建自动化内容审核系统

OpenClawQwen3.5-9B&#xff1a;3步搭建自动化内容审核系统 1. 为什么选择OpenClaw做内容审核&#xff1f; 去年运营一个技术社区时&#xff0c;我每天要花2小时手动审核用户提交的内容。直到发现OpenClaw这个开源自动化框架&#xff0c;配合Qwen3.5-9B的多模态能力&#xff…...

Arduino轻量级软件消抖库FTDebouncer原理与应用

1. 项目概述Future Tailors’ Debouncer&#xff08;简称 FTDebouncer&#xff09;是一个专为 Arduino 平台设计的轻量级、高效率、低资源占用的软件消抖库。其核心目标是解决嵌入式开发中一个看似简单却极易出错的基础问题&#xff1a;机械按键或开关引脚的硬件抖动&#xff0…...

毕业设计题目100个:面向工程实践的技术选型与实现指南

最近在帮学弟学妹们看毕业设计&#xff0c;发现一个挺普遍的现象&#xff1a;很多同学想法天马行空&#xff0c;但一到动手实现就卡壳&#xff0c;要么技术栈选得五花八门拼不起来&#xff0c;要么代码写得像一锅粥&#xff0c;后期根本没法维护。选题“假大空”、实现“散乱差…...

AI建站避坑指南:10个高频问题与风险防范全解析

用AI建站虽然快&#xff0c;但过程中隐藏的风险如果没到&#xff0c;轻则内容效果差&#xff0c;重则可能有版权或合规隐患。这份避坑指南&#xff0c;围绕大家最关心的10个核心问题&#xff0c;给出客观的分析和可操作的防范建议&#xff0c;帮你安心用好AI建站工具。\### 核心…...

Java开发者晋升指南:集成Phi-3-vision构建AI面试题库与评估系统

Java开发者晋升指南&#xff1a;集成Phi-3-vision构建AI面试题库与评估系统 1. 技术招聘的痛点与AI解决方案 技术面试官每天面临重复性劳动&#xff1a;根据JD设计题目、评估代码、写反馈。传统方式存在三大痛点&#xff1a; 题库更新慢&#xff1a;技术栈迭代快&#xff0c…...

快速部署Super Qwen Voice World:复古像素风语音合成中心体验

快速部署Super Qwen Voice World&#xff1a;复古像素风语音合成中心体验 1. 项目简介与核心价值 Super Qwen Voice World是一个基于Qwen3-TTS技术构建的语音合成平台&#xff0c;它将传统的语音合成过程转化为一场充满趣味的8-bit游戏冒险。这个项目最吸引人的特点是&#x…...

Windows 10/11 下保姆级 APK 逆向环境搭建:JDK、APKTool、JADX 一步到位

Windows 10/11 下保姆级 APK 逆向环境搭建&#xff1a;JDK、APKTool、JADX 一步到位 逆向工程是许多安全研究人员和开发者探索应用内部机制的重要技能。对于 Android 应用来说&#xff0c;搭建一个稳定可靠的逆向环境是第一步。本文将详细介绍如何在 Windows 系统上配置完整的…...

2025最新版Shenyu API网关实战:30分钟快速搭建微服务流量控制中心

2025最新版Shenyu API网关实战&#xff1a;30分钟快速搭建微服务流量控制中心 你还在为微服务架构中的API管理和流量控制烦恼吗&#xff1f;面对日益复杂的服务调用关系&#xff0c;如何高效实现请求路由、安全防护和流量监控&#xff1f;本文将带你30分钟内从零开始搭建基于S…...