网站首页 > 基础教程 正文
今天我们来聊聊Python中最「不起眼」却最常用的数据类型——字符串!
你以为"hello world"就是全部?其实字符串藏着很多让人直呼「原来如此」的细节!
1. 字符串的「铁律」:一旦创建,终身不变!
所有对字符串的修改操作(比如拼接、替换),都会生成新对象!
python
s = "Hello"
print(id(s)) # 输出内存地址:140000000
s += " World" # 新对象诞生!
print(id(s)) # 新地址:150000000(和之前不同)
为什么要这样设计?
为了保证哈希安全(字典键的基石!)和多线程下的数据安全~
2. 三种创建方式,90%的人只用过两种!
- 基础款:单引号' '、双引号" "(功能完全相同)
- 多行神器:三引号''' '''或""" """,写SQL、HTML时超方便!
sql_query = """
SELECT *
FROM users
WHERE name = '小明'
"""
- 冷知识:空字符串""比list()还快!初始化变量时用它准没错~
3. 字符串的「分身术」:切片与索引
和列表一样,字符串支持正反向索引,但记住——不能修改!
s = "Python最强"
print(s[2]) # 输出:t(正向从0开始)
print(s[-3]) # 输出:最(反向从-1开始)
print(s[3:6]) # 输出:hon(切片到索引6的前一位!)
4. 最常用的6个字符串方法
场景 | 方法示例 | 输出结果 |
按分隔符拆分 | "A,B,C".split(",") | ['A', 'B', 'C'] |
合并列表为字符串 | "-".join(['A','B','C']) | "A-B-C" |
查找子串位置 | "hello".find("e") | 1(找不到返回-1) |
替换内容 | "abc".replace("a","X") | "Xbc" |
大小写转换 | "Hello".lower() | "hello" |
去除首尾空格 | " text ".strip() | "text" |
5. 格式化字符串:选f-string就对了!
三种写法对比:
# 1. f-string(最推荐!)
name = "小明"
print(f"{name}今年{20}岁") # 小明今年20岁
# 2. str.format()(兼容旧版本)
"{}今年{}岁".format(name, 20)
# 3. %格式化(逐渐淘汰)
"%s今年%d岁" % (name, 20)
为什么f-string更快?
它在执行时直接计算并嵌入值,省去了解析格式的时间!
6. 编码问题:让无数人崩溃的坑!
- 黄金原则:程序内部用str(Unicode),存储/传输用bytes
# 字符串 → 字节
s = "中文"
b = s.encode("utf-8") # b'\xe4\xb8\xad\xe6\x96\x87'
# 字节 → 字符串
b.decode("utf-8") # 中文
遇到乱码怎么办?
统一代码和文件的编码为UTF-8(99%的问题都能解决)!
7. 高效拼接:别再用 += 了!
错误示范:频繁拼接生成大量临时对象,内存爆炸!
python
s = ""
for i in range(10000):
s += str(i) # 每次循环都创建新对象!
正确做法:用列表暂存 + join一次性合并,性能提升100倍!
parts = []
for i in range(10000):
parts.append(str(i))
s = "".join(parts)
8. 冷知识:Python的「字符串驻留」
Python会自动缓存短字符串(如"hello"),不同变量共享同一内存!
a = "hello"
b = "hello"
print(a is b) # True(内存地址相同)
手动驻留大字符串:用sys.intern()节省内存
import sys
s = sys.intern("非常非常长的字符串......")
总结
字符串看似简单,却藏着性能优化、编码陷阱、内存管理的大学问! 下次遇到字符串问题,记得回来看看这篇「秘籍」哦~
你在项目中踩过哪些字符串的坑? 欢迎在评论区留言讨论!
关注我,学习更多Python黑科技!
猜你喜欢
- 2025-03-20 Python水仙花数II(字符串分割)(python水仙花数问题)
- 2025-03-20 一文掌握如何在 Python 中删除字符串中的最后一个字符
- 2025-03-20 Python内置函数详解(python 常用内置函数)
- 2025-03-20 Python 中的字符串(python字符串%d)
- 2025-03-20 一文掌握Python中字符串(字符串 python)
- 2025-03-20 python如何对字符串进行操作(python字符串常用操作)
- 2025-03-20 从 Python 字符串中删除特殊字符:完整指南
- 2025-03-20 解锁Python字符串处理的10个神技!让你的代码效率翻倍
- 2025-03-20 【php学习笔记】php中str_split()方法使用笔记
- 2025-03-20 从 Python 中的字符串中删除特殊字符
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)