23、Python字符串核心机制解析:驻留原理、对象比较与成员检测实战

适合人群 :零基础自学者 | 编程小白快速入门
阅读时长:约5分钟

文章目录

一、问题:Python的字符串驻留机制?

1、例子1:字符串驻留现象

python 复制代码
str1 = "Python" # 简单字符串会被驻留
str2 = "Python"  

print(id(str1))  # 输出内存地址(例如:140245378789616)  
print(id(str2))  # 输出相同的内存地址(例如:140245378789616)  
print(str1 is str2)  # True(证明是同一个对象)  

2、答案:

(1)字符串驻留

  1. 字符串驻留机制 是Python的内存优化技术 。当多个变量被赋予相同内容的字符串 时,Python不会重复创建新对象,而是让这些变量共享同一块内存地址
  2. 简单说:常量字符串只保留一份。

二、问题:Python字符串比较和同一性?

1、例子1:用户登录验证系统

python 复制代码
# 用户输入的验证码(来自表单)  
user_input = "AbC123"  

# 系统生成的验证码(存储在数据库)  
system_code = "AbC123"  

# 值相等判断(内容是否相同)  
if user_input == system_code:  
    print("验证码正确 ✅")  # 输出:验证码正确 ✅  
else:  
    print("验证码错误 ❌")  

# 同一性判断(是否同一个对象)  
if user_input is system_code:  
    print("指向内存中的同一对象")  
else:  
    print("不同内存对象")  # 输出:不同内存对象  

输出结果

bash 复制代码
验证码正确 ✅  
不同内存对象  

2、例子2:关键特性说明

python 复制代码
name1 = "Python"  
name2 = "Python"  
name3 = "Py" + "thon"  # 拼接创建新字符串  

# 值相等检查  
print(name1 == name2)  # True(内容相同)  
print(name1 == name3)  # True(内容相同)  

# 同一性检查(受驻留机制影响)  
print(name1 is name2)  # True(小字符串共享内存)  
print(name1 is name3)  # False(新创建的对象)  

内存原理图示

bash 复制代码
name1 → [P][y][t][h][o][n] ← name2(共享内存)  
name3 → [P][y][t][h][o][n](新建独立内存)  

3、答案:

(1)同一操作符判断字符串相同

  1. 可以直接使用==!=对字符串进行比较,是否值相同。

  2. 使用isnot is,判断2个对象是否相同,比较的是对象的地址,即id(obj1)是否和id(obj2)相等。

  3. 核心概念对比

操作 符号 检查内容 生活类比
值相等 == 内容是否完全相同 比较两本书内容是否相同
同一性 is 是否同一内存对象 比较两本书是否同一本书

三、问题:Python的成员操作符判断子字符串?

1、例子1:检查单词中是否包含特定字母

python 复制代码
# 检查单词"apple"中是否包含特定字母
word = "apple"

# 检查是否包含字母"a"
if "a" in word:
    print("✅ 包含字母'a'")  # 会输出这行
    
# 检查是否包含字母"z"
if "z" not in word:
    print("✅ 不包含字母'z'")  # 会输出这行

输出结果

bash 复制代码
✅ 包含字母'a'
✅ 不包含字母'z'

2、答案:

(1)成员操作符判断子字符串

  1. innot in关键字,判断某个字符(子字符串)是否存在于字符串中。

  2. 核心规则说明

操作符 代码示例 检查内容
in "Python" in "我爱Python" 子串是否存在于字符串中
not in "Java" not in "Python教程" 子串是否不存在于字符串中

四、动手试一试

任务1:验证字符串驻留机制

python 复制代码
# 创建两个相同内容的字符串  
str1 = "Python教程"  
str2 = "Python教程"  

# 验证是否为同一对象  
is_same_object = ______  # 使用is操作符  

print(f"是否为同一对象:{is_same_object}")  
print(f"str1内存地址:{id(str1)}")  
print(f"str2内存地址:{id(str2)}")  

参考答案:

python 复制代码
is_same_object = str1 is str2  # True(简单字符串会被驻留)

解析

  1. Python会对简单字符串自动启用驻留机制
  2. is操作符验证对象同一性

任务2:敏感词检测系统

python 复制代码
# 用户评论内容  
comment = "这个产品非常好用!"  

# 检测是否包含敏感词"垃圾"  
has_sensitive_word = ______  # 使用in操作符  

if not has_sensitive_word:   # 当不存在敏感词时
    print("✅ 评论通过审核")  
else:  
    print("❌ 检测到敏感词")  

参考答案:

python 复制代码
has_sensitive_word = "垃圾" in comment  # False

关键点

  1. 使用in判断子字符串是否存在
  2. 返回布尔值用于条件判断

📢 互动区

👉 遇到问题?在评论区:

  1. 描述问题(带代码截图更好)
  2. 分享学习心得
  3. 给文章提建议

支持作者 :点赞 | 收藏 | 关注

你的三连是我更新的最大动力!


相关推荐
CodeCraft Studio9 分钟前
图像处理控件Aspose.Imaging教程:用Java将 CMX 转换为 PNG
java·图像处理·python·aspose
惊鸿一博39 分钟前
java_api路径_@Parameter与@RequestParam区别
java·python
漫谈网络1 小时前
pysnmp 操作流程和模块交互关系的可视化总结
python·pysnmp
钢铁男儿1 小时前
Python内置类型子类化的陷阱与解决方案
开发语言·前端·python
电院工程师1 小时前
ChipWhisperer教程(三)
笔记·python·嵌入式硬件·安全·fpga开发·安全架构
神州问学1 小时前
AutoGLM沉思版:智能体推理的Deep Research探索
人工智能·python
安全系统学习2 小时前
网络安全之框架安全漏洞分析
开发语言·python·计算机网络·web安全·网络安全
天天爱吃肉82182 小时前
【新能源汽车技术全景解析:构建智能出行新生态】
python·汽车
loveCode2 小时前
基于Python实现一个 Windows Tree 命令工具
python
扑克中的黑桃A2 小时前
Python:类方法、实例方法与静态方法深度解析(补)
python