【python】基础知识点100问

以下是Python基础语法知识的30条要点整理,涵盖数据类型、函数、控制结构等核心内容,结合最新资料归纳总结:

基础30问

一、函数特性

  1. 函数多返回值
    支持用逗号分隔返回多个值,自动打包为元组,接收时可解包到多个变量

    def func(): return 1, "a"
    x, y = func()
    
  2. 匿名函数lambda
    单行临时函数,适用于简单逻辑,如 lambda x: x*2

  3. 参数传递方式
    包括位置参数、关键字参数、默认参数、可变长参数(*args收集为元组,**kwargs收集为字典)

  4. 全局变量修改
    函数内修改全局变量需用global声明

  5. 函数文档字符串
    使用三重引号定义,可通过__doc__属性访问,IDE悬停显示说明


二、数据类型与操作

  1. 动态类型语言
    变量无需声明类型,赋值时自动推断

  2. 字符串格式化方法
    f-string(f"{name} is {age}")、format()函数及%占位符

  3. 列表推导式
    快速生成列表,如 [x**2 for x in range(10) if x%2==0]

  4. 字典推导式
    {k:v for k,v in zip(keys, values)}

  5. 集合去重与运算
    支持交集(&)、并集(|)、差集(-)、对称差集(^)

  6. 可变与不可变类型
    不可变:数字、字符串、元组;可变:列表、字典、集合


三、控制结构

  1. 连续条件判断
    if 10 <= x <= 20 等效于 x >=10 and x <=20

  2. 三元表达式
    简化条件赋值:result = a if condition else b

  3. 循环中的else
    for/while循环正常结束(非break中断)时执行else块

  4. enumerate遍历索引
    同时获取元素和下标:for idx, val in enumerate(lst)

  5. zip并行迭代
    多列表同步遍历:for a, b in zip(list1, list2)


四、高级特性

  1. 上下文管理器
    with open('file') as f自动处理资源释放

  2. 生成器函数
    使用yield暂停执行并返回值,支持惰性计算

  3. 装饰器语法
    通过@decorator修饰函数,扩展功能而不修改原代码

  4. 类型注解
    可选类型提示:def func(name: str) -> int:


五、模块与异常

  1. 模块导入方式
    import modulefrom module import funcimport module as alias

  2. 异常处理结构
    try-except-else-finally四段式处理错误

  3. 自定义异常
    继承Exception类创建特定错误类型


六、代码规范

  1. 缩进规则
    必须用4空格缩进定义代码块(Tab自动转空格)

  2. 注释写法
    单行注释用#,多行用三引号,文档注释遵循PEP257

  3. 空值处理
    None表示空对象,pd.NA用于Pandas缺失值

  4. 代码分多行
    反斜杠\或括号内自然换行(如列表、元组)


七、实用技巧

  1. 列表与元组的区别
    列表可变(增删元素),元组不可变但查询更快

  2. 字典键的限制
    键必须是不可变类型(如字符串、数字、元组)

  3. 海龟绘图库
    图形化编程入门:import turtle绘制几何图形


扩展建议

以上知识点覆盖Python 3.10+核心语法,建议结合具体场景练习(如用集合去重、用生成器处理大数据)。
在这里插入图片描述

进阶30问

以下是Python进阶语法知识的30条扩展要点(与前一版无重复),结合Python 3.12特性及工程实践整理:

一、高级面向对象

  1. 描述符协议
    通过__get__/__set__方法实现属性托管,常用于ORM框架

    class Temperature:def __get__(self, obj, objtype): return obj._temp * 1.8 + 32
    
  2. 元类编程
    使用__metaclass__控制类创建过程,实现接口验证或自动注册

  3. 类装饰器
    用装饰器修改类结构,如自动添加__repr__方法

  4. 动态属性管理
    __getattr__处理未定义属性访问,__setattr__拦截赋值操作

  5. 多重继承的MRO
    方法解析顺序遵循C3算法,可用ClassName.__mro__查看继承链


二、内存与性能优化

  1. __slots__内存优化
    限制类属性数量,减少内存占用(适用于百万级实例场景)

    class Point:__slots__ = ('x', 'y')
    
  2. 生成器表达式
    惰性计算大数据集:(x*2 for x in range(10**6))

  3. 内存视图memoryview
    零拷贝处理二进制数据,提升numpy数组处理效率

  4. 弱引用weakref
    创建不阻止垃圾回收的对象引用,适用于缓存场景

  5. 协程中的yield from
    委托子生成器执行,简化嵌套协程代码结构


三、并发与异步

  1. GIL机制影响
    Global Interpreter Lock导致CPU密集型多线程无效,需用多进程规避

  2. async/await语法
    协程函数声明与等待,结合asyncio实现高并发IO操作

    async def fetch():await asyncio.sleep(1)
    
  3. 线程池与ProcessPoolExecutor
    concurrent.futures模块实现简易并行任务调度

  4. 协程状态管理
    通过inspect.getcoroutinestate()检测协程运行状态

  5. 异步上下文管理器
    async with管理异步资源(如数据库连接池)


四、元编程与反射

  1. 函数签名检查
    inspect模块解析参数:sig = inspect.signature(func)

  2. 动态代码执行
    exec()执行字符串代码,compile()预编译代码对象

  3. 猴子补丁技术
    运行时修改类/模块的实现,用于紧急修复或测试mock

  4. 抽象基类(ABC)
    abc模块定义接口规范,强制子类实现特定方法

  5. 类型提示泛型
    使用TypeVarGeneric创建泛型类/函数

    T = TypeVar('T')
    class 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

采用AI神经网络降噪算法的通信语音降噪(ENC)模组性能测试和应用

采用AI降噪的语言通话环境抑制模组性能效果测试 随着AI时代来临.通话设备的环境噪音抑制也进入AI降噪算法时代. AI神经网络降噪技术是一款革命性的语音处理技术&#xff0c;他突破了传统单麦克风和双麦克风降噪的局限性,利用采集的各种日常环境中的噪音样本进行训练学习.让降噪…

openwrt目录结构(部分)

1&#xff0c;openwrt 原始目录需要注意的目录 tools: 该目录下存放着一些&#xff0c;编译工程的自动化工具包和一些在编译过程用到的命令包&#xff0c; 查看目录下的Makefile&#xff0c;知道其会在编译过程中将依赖包下载 例如&#xff1a; autoconf / lzma / mkimage/ …

RDB和AOF的区别

Redis提供两种主要的持久化机制&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only File&#xff09;&#xff0c;它们在数据持久化方式、性能影响及恢复策略上各有特点。以下是两者的对比分析及使用建议&#xff1a; RDB&#xff08;快照持久…

基于大模型的甲状腺结节诊疗全流程预测与方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 国内外研究现状 二、大模型预测原理与方法 2.1 相关大模型概述 2.2 数据收集与预处理 2.3 模型训练与验证 三、术前预测与评估 3.1 结节性质预测 3.1.1 良恶性判断 3.1.2 与传统诊断方法对比 3.2 手术风险预测…

逆向破解:x64dbg

文章目录 一、CPU窗口1、反汇编窗口2、寄存器窗口3、栈地址窗口4、十六进制数据窗口5、堆栈参数解析窗口 二、常用快捷键三、字符串检索功能四、调试功能1、上一步 一、CPU窗口 1、反汇编窗口 2、寄存器窗口 寄存器窗口用于显示和解释当前线程环境下CPU寄存器的各种状态值和内…

免布线视频桩如何重塑停车管理模式

传统停车管理常因布线复杂、维护成本高而难以推广&#xff0c;而“免布线视频桩”通过无线设计、低功耗与高精度检测&#xff0c;为城市停车提供高效解决方案。作为智慧城市建设的创新工具&#xff0c;免布线视频桩以即装即用、长效续航等特性&#xff0c;正在重塑停车管理模式…

【CTFer成长之路】举足轻重的信息搜集

举足轻重的信息搜集 信息搜集 常见的搜集 题目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80启动方式 docker-compose up -d 题目Flag n1book{info_…

springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码

大致分为这三步 首先在usercontroller中增加updatePwd方法 PatchMapping ("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params){//1.校验参数String oldPwd params.get("old_pwd");String newPwd params.get("n…

OpenCV进阶操作:指纹验证、识别

文章目录 前言一、指纹验证1、什么是指纹验证2、流程步骤 二、使用步骤&#xff08;案例&#xff09;三、指纹识别&#xff08;案例&#xff09;1、这是我们要识别的指纹库2、这是待识别的指纹图3、代码4、结果 总结 前言 指纹识别作为生物识别领域的核心技术之一&#xff0c;…

ECLIC中断流程及实际应用 —— RISC-V中断机制(二)

在长期的嵌入式开发实践中&#xff0c;对中断机制的理解始终停留在表面层次&#xff0c;特别当开发者长期局限于纯软件抽象层面时&#xff0c;对中断机制的理解极易陷入"知其然而不知其所以然"的困境&#xff0c;这种认知的局限更为明显&#xff1b;随着工作需要不断…

计算机网络-LDP标签发布与管理

前面学习了LDP建立邻居&#xff0c;建立会话&#xff0c;今天来学习在MPLS中的标签发布与管理。 在MPLS网络中&#xff0c;下游LSR决定标签和FEC的绑定关系&#xff0c;并将这种绑定关系发布给上游LSR。LDP通过发送标签请求和标签映射消息&#xff0c;在LDP对等体之间通告FEC和…

Go语言运算符详解

文章目录 1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符运算符优先级注意事项 Go语言提供了与其他语言类似的运算符&#xff0c;包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。这些运算符即可满足基本的运算需求。 1. 算…

Selenium模拟人类行为,操作网页的方法(全)

看到有朋友评论问&#xff0c;用selenium怎么模仿人类行为&#xff0c;去操作网页的页面呢&#xff1f; 我想了想&#xff0c;这确实是一个很大的点&#xff0c;不应该是一段代码能解决的&#xff0c; 就像是,如果让程序模拟人类的行为。例如模拟人类买菜&#xff0c;做饭&am…

RabbitMQ的工作队列模式和路由模式有什么区别?

RabbitMQ 的工作队列模式&#xff08;Work Queues&#xff09;和路由模式&#xff08;Routing&#xff09;是两种不同的消息传递模式&#xff0c;主要区别在于消息的分发逻辑和使用场景。以下是它们的核心差异&#xff1a; 1. 工作队列模式&#xff08;Work Queues&#xff09…

牛客练习赛138(首篇万字题解???)

赛时成绩如下&#xff1a; 1. 小s的签到题 小s拿到了一个比赛榜单&#xff0c;他要用最快的速度找到签到题&#xff0c;但是小s脑子还是有点晕&#xff0c;请你帮帮小s&#xff0c;助力他找到签到题。 比赛榜单是一个 2 行 n 列的表格&#xff1a; 第一行是 n 个大写字母&#…

linux0.11内核源码修仙传第十六章——获取硬盘信息及根目录挂载

&#x1f680; 前言 书接第十四章&#xff1a;linux0.11内核源码修仙传第十四章——进程调度之fork函数&#xff0c;在这一节博客中已经通过fork进程创建了一个新的进程1&#xff0c;并且可以被调度&#xff0c;接下来接着主线继续走下去。希望各位给个三连&#xff0c;拜托啦&…

mobile自动化测试-appium webdriverio

WebdriverIO是一款支持mobile app和mobile web自动化测试框架&#xff0c;与appium集成&#xff0c;完成对mobile应用测试。支持ios 和android两种平台&#xff0c;且功能丰富&#xff0c;是mobile app自动化测试首选框架。且官方还提供了mobile 应用测试example代码&#xff0…

Kubernetes排错(十):常见网络故障排查

通用排查思路 Kubernetes 集群内不同服务之间的网络通信出现异常&#xff0c;表现为请求超时、连接失败或响应缓慢&#xff0c;导致服务间依赖关系中断&#xff0c;依赖服务的功能不可用或性能下降&#xff0c;甚至可能波及整个微服务架构&#xff0c;引发连锁反应&#xff0c…

PyTorch 张量与自动微分操作

笔记 1 张量索引操作 import torch ​ # 下标从左到右从0开始(0->第一个值), 从右到左从-1开始 # data[行下标, 列下标] # data[0轴下标, 1轴下标, 2轴下标] ​ def dm01():# 创建张量torch.manual_seed(0)data torch.randint(low0, high10, size(4, 5))print(data->,…

接口的基础定义与属性约束

在 TypeScript 中&#xff0c;接口&#xff08;Interface&#xff09;是一个非常强大且常用的特性。接口定义了对象的结构&#xff0c;包括对象的属性和方法&#xff0c;可以为对象提供类型检查和约束。通过接口&#xff0c;我们可以清晰地描述一个对象应该具备哪些属性和方法。…