会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
wangya216
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
5
6
7
8
9
10
11
下一页
2025年11月4日
只实现 `__getitem__()` 方法的对象也可以被称为“可迭代对象”吗?
摘要: 只实现 __getitem__() 方法的对象实际上是可迭代对象。 但这类对象不会被 isinstance(obj, Iterable) 判定为 True(因为 Iterable 抽象基类的判定依赖 iter 方法)。 这是“实际可迭代”与“形式上被识别为 Iterable”的区别。 在 Pytho
阅读全文
posted @ 2025-11-04 09:07 wangya216
阅读(39)
评论(0)
推荐(0)
2025年11月3日
Python中的数据串用:以推荐系统中“用户偏好管理”为例
摘要: Python中的数据串用:以推荐系统中“用户偏好管理”为例 在推荐系统中,“用户偏好管理”是核心模块之一。它需要精准记录每个用户的浏览历史、评分、兴趣标签等数据,以此为基础生成个性化推荐。但如果在实现时忽略了Python中“可变对象引用”的特性,就可能出现“数据串用”——用户A的偏好意外污染用户B的
阅读全文
posted @ 2025-11-03 23:38 wangya216
阅读(26)
评论(0)
推荐(0)
Python生成器表达式详解(含与列表推导式核心对比、别名探讨)
摘要: 从“囤货”到“现做”:Python生成器表达式详解(含与列表推导式核心对比) 在Python中,处理数据时经常会遇到一个矛盾:既要简洁的语法,又要避免大量数据占用内存。列表推导式虽能简化代码,却会“一次性生成所有元素”,面对大数据时容易引发内存爆炸;而生成器表达式恰好解决了这个问题——它采用“惰性求
阅读全文
posted @ 2025-11-03 20:59 wangya216
阅读(333)
评论(0)
推荐(0)
Python列表推导式完全指南
摘要: 从循环到一行代码:Python列表推导式完全指南 在Python中,列表推导式(List Comprehension)是一种简洁、高效的创建列表的语法。它能将原本需要多行循环+条件判断的代码,浓缩成一行可读性强的表达式。但对新手来说,这种“一行代码”可能显得晦涩——本文通过10+实例,从基础到进阶,
阅读全文
posted @ 2025-11-03 20:53 wangya216
阅读(376)
评论(0)
推荐(0)
一行“优雅”代码踩爆3x3矩阵:Python列表乘法的“共享引用”陷阱
摘要: 一行“优雅”代码踩爆3x3矩阵:Python列表乘法的“共享引用”陷阱 很多Python新手初次创建多维列表时,都会被[[0] * 3] * 3这种写法吸引——一行代码搞定3x3矩阵,看起来简洁又聪明。可当你像这样修改一个元素时,却会遭遇“全体叛变”的诡异场景: # 看似优雅的3x3矩阵创建 mat
阅读全文
posted @ 2025-11-03 20:44 wangya216
阅读(75)
评论(0)
推荐(0)
从O(n²)到O(n):Python字符串拼接的效率陷阱与最佳实践
摘要: 从O(n²)到O(n):Python字符串拼接的效率陷阱与最佳实践 在Python开发中,字符串拼接是最常见的操作之一。但看似简单的+号拼接,在循环场景下可能埋下严重的性能隐患。本文通过两段代码的对比,拆解字符串拼接的效率差异根源,带你理解为什么“列表+join”是更优的选择。 一、两段代码的直观对
阅读全文
posted @ 2025-11-03 20:38 wangya216
阅读(118)
评论(0)
推荐(0)
Python 中可变对象的“引用赋值”特性——可变对象的“引用传递”
摘要: 一、踩坑代码 某程序老鸟讲了一个故事: “2019年夏天,我在做一个推荐系统的用户画像模块。当时写了这样的代码: # 当时的蠢代码,现在想起来都脸红 default_preferences = [] # 想着所有用户共享一个默认偏好 users = {} for user_id in user_id
阅读全文
posted @ 2025-11-03 20:21 wangya216
阅读(40)
评论(0)
推荐(0)
2025年10月31日
为什么不加@property和@score.setter也可以给score赋值呢?
摘要: class Student: #定义Student类 def __init__(self): self._score=0 #@property def score(self): #用@property装饰器定义一个用于获取score值的方法 return self._score #@score.se
阅读全文
posted @ 2025-10-31 17:56 wangya216
阅读(29)
评论(0)
推荐(0)
Python 中 `__all__` 与 `import *` 的关系及核心用法
摘要: Python 中 __all__ 与 import * 的关系及核心用法 在 Python 模块导入中,__all__ 和 import *(星号导入)是紧密关联但完全不同的概念,前者是“模块的导出清单”,后者是“导入语法”。下面分点详细拆解: 一、__all__ 与 import * 的核心区别(
阅读全文
posted @ 2025-10-31 17:34 wangya216
阅读(84)
评论(0)
推荐(0)
实例的命名空间和类的命名空间详解(python中,实例方法实际上也是类属性,这个说法对吗?)
摘要: 一、“实例方法实际上也是类属性”的说法是否正确? 正确。在 Python 中,实例方法本质上是类的属性(更准确地说,是“类的方法属性”),存储在类的命名空间中,而非实例的命名空间中。 具体解释: 当我们在类中定义一个实例方法时,这个方法会被存储在类的命名空间中(作为类的一个属性),而不是每个实例的命
阅读全文
posted @ 2025-10-31 09:16 wangya216
阅读(52)
评论(0)
推荐(0)
2025年10月30日
python中用“`property`+`setter` ”装饰后的属性访问并非“必须项”,而是“优化项”
摘要: 在 Python 中,属性的“直接赋值/读取”和“property+setter 装饰器”本质是两种不同的属性访问方式——前者是直接操作实例变量,后者是通过封装的方法间接操作。 之所以“不加装饰器也能读写”,核心原因是 Python 允许直接访问实例变量,而 property 并非“必须项”,而是“
阅读全文
posted @ 2025-10-30 12:41 wangya216
阅读(50)
评论(0)
推荐(0)
2025年10月24日
在C语言中,定义常量的方法有哪几种?
摘要: 在C语言中,定义常量的方法主要有以下3种: 一、#define 预处理指令(宏定义) 通过预处理指令将符号替换为指定文本,是最基础的常量定义方式。 语法: #define 常量名 常量值 // 无分号,预处理阶段会直接替换 示例: #define PI 3.1415926 // 数值常量 #defi
阅读全文
posted @ 2025-10-24 22:31 wangya216
阅读(202)
评论(0)
推荐(0)
2025年10月22日
人狗大战Ⅲ
摘要: import random # 1. 元类:追踪所有角色类的创建 class MetaCharacter(type): """元类:记录所有角色类并自动添加种族标识""" character_types = [] # 存储所有角色类 def __new__(cls, name: str, bases
阅读全文
posted @ 2025-10-22 17:41 wangya216
阅读(118)
评论(0)
推荐(0)
人狗大战Ⅱ:融合了封装、继承、多态、鸭子类型、类属性 / 方法、静态方法、特殊方法、super、property、抽象基类、__slots__等语法特性
摘要: 以下是一个稍微复杂的 “人狗大战” 面向对象实现,融合了封装、继承、多态、鸭子类型、类属性 / 方法、静态方法、特殊方法、super、property、slots 等语法特性,并在注释中详细说明: from abc import ABC, abstractmethod # 抽象基类,用于定义接口约束
阅读全文
posted @ 2025-10-22 11:50 wangya216
阅读(122)
评论(0)
推荐(0)
什么情况下有必要使用抽象基类ABC?
摘要: 在面向对象编程中,抽象基类(Abstract Base Class,简称ABC) 是一种不能被实例化的特殊类,其主要作用是定义一组子类必须实现的接口(方法或属性),从而强制子类遵循统一的规范。 抽象基类的核心特点: 不能实例化:抽象基类本身只是一个“模板”,无法直接创建对象(如 obj = Abst
阅读全文
posted @ 2025-10-22 11:04 wangya216
阅读(83)
评论(0)
推荐(0)
Python 中 的 “.” 是分隔符还是运算符,都可以怎么用?
摘要: 在 Python 中,“.” 是运算符,具体来说是属性访问运算符,用于访问对象的属性或方法。它的核心作用是在对象与属性/方法之间建立关联,实现对对象内部数据和行为的调用。 一、“.” 作为属性访问运算符的应用场景 1. 访问对象的属性 对象的属性是其存储的数据,通过“.”可以直接读取或修改这些属性的
阅读全文
posted @ 2025-10-22 10:44 wangya216
阅读(214)
评论(0)
推荐(0)
人狗大战Ⅰ-1:面向过程 vs 面向对象对比与分析
摘要: 一、面向过程实现 # 攻击值定义 attack_vals = { "京巴": 30, "藏獒": 80 } # 生成狗的信息 def dog(name, dtype): data = { "name": name, "dtype": dtype, "life_val": 100, "attack_v
阅读全文
posted @ 2025-10-22 10:35 wangya216
阅读(101)
评论(0)
推荐(0)
Python 中单下划线与双下划线命名的使用
摘要: Python 中单下划线与双下划线命名的使用 在 Python 中,变量或函数名前的“下划线”并非简单的装饰,而是承载着“访问权限”和“设计意图”的重要约定。无论是单下划线(_name)还是双下划线(__name),都服务于“区分成员用途、降低代码耦合”的目标,但在使用场景、语法特性和访问限制上存在
阅读全文
posted @ 2025-10-22 10:25 wangya216
阅读(184)
评论(0)
推荐(0)
理解`super()`
摘要: 要理解super(),可以先记住它的核心作用:帮你找到“父类或兄弟类”的方法,尤其是当子类自己重写了某个方法,但你还想调用被重写的“原版”(父类或兄弟类的版本)时,就需要它。 先看个最简单的例子:单继承中用super() 比如你写了一个子类继承父类,子类重写了父类的方法,但想在子类方法里顺便调用一下
阅读全文
posted @ 2025-10-22 06:25 wangya216
阅读(104)
评论(0)
推荐(0)
在 Python 中,为什么说“一切皆对象”?
摘要: 在 Python 中,“一切皆对象”是核心设计哲学,理解这一点能帮我们打通对 Python 语法的底层认知。下面结合具体问题详细解释: 一、为什么说 Python 中“一切皆对象”? 在 Python 中,所有能被“赋值给变量”或“作为参数传递”的实体,本质上都是“对象”。对象的核心特征是:有自己的
阅读全文
posted @ 2025-10-22 06:20 wangya216
阅读(204)
评论(0)
推荐(0)
五节课掌握 Python 面向对象(以“人狗大战”为例)
摘要: 五节课掌握 Python 面向对象(以“人狗大战”为例) 第一节课:OOP 入门——创建“人”和“狗”的基本模型 目标:掌握类、对象、实例属性和方法的基础语法,能创建简单的“人”和“狗”并让它们执行基本动作。 什么是面向对象?从“人狗大战”理解 现实中的“人”和“狗”:有名字、生命值(属性),会攻击
阅读全文
posted @ 2025-10-22 06:06 wangya216
阅读(203)
评论(0)
推荐(0)
静态方法(`@staticmethod`)和类方法(`@classmethod`)的应用场景及选择原则
摘要: 在 Python 中,静态方法(@staticmethod)和类方法(@classmethod)都属于“类级别的方法”,但适用场景有明确区别。以下从核心特性出发,详细说明两者的应用场景及选择原则: 一、静态方法(@staticmethod):与类/实例均无关的“工具函数” 静态方法没有 self 或
阅读全文
posted @ 2025-10-22 05:47 wangya216
阅读(334)
评论(0)
推荐(0)
为什么一般教材在讲解python的多态概念时,不用抽象基类及其相关内容讲解呢?
摘要: 在讲解多态时较少优先用 Python 抽象基类(ABC,Abstract Base Class),核心原因是 ABC 并非 Python 多态的“主流或默认实现方式”,它更偏向“静态语言风格的补充工具”,而 Python 多态的本质是由动态类型和鸭子类型决定的——这更符合 Python“灵活、简洁”
阅读全文
posted @ 2025-10-22 05:33 wangya216
阅读(47)
评论(0)
推荐(0)
鸭子类型(Duck Typing)中的“类型”,指的是什么的类型?为什么很多人认为“Python 没有真正实现多态”?多态的核心目的是什么?鸭子类型如何实现多态?
摘要: 鸭子类型(Duck Typing)中的“类型”,指的是什么的类型? 鸭子类型(Duck Typing)中的“类型”,指的是“具备特定行为的对象的类型”——它不是传统意义上“由类定义的类型”(如 int、str 或自定义类),而是“由对象具备的方法/属性(行为)所定义的逻辑类型”。简单说:“类型”由“
阅读全文
posted @ 2025-10-22 05:09 wangya216
阅读(78)
评论(0)
推荐(0)
对比c++中的多态和python的多态
摘要: C++ 和 Python 中的“多态”都围绕“同一接口、不同实现”的核心思想,但由于语言特性(静态类型 vs 动态类型)的差异,两者在实现方式、约束性、灵活性上有显著区别。以下从核心机制、实现条件、使用场景等维度对比: 一、核心机制:静态绑定 vs 动态绑定 C++ 的多态:基于静态类型检查 + 动
阅读全文
posted @ 2025-10-22 04:49 wangya216
阅读(64)
评论(0)
推荐(0)
上一页
1
···
5
6
7
8
9
10
11
下一页