字符串
简介和驻留机制
基本数据类型、不可变的字符序列
驻留机制:有个驻留池留着相同的字符串,如果内容相同,就不会再去开辟空间存储了,意思是内容相同的字符串占一个位
你可以用ID()
方法去查看三个一样的字符ID 都是一样的,你也可以用 is
判断
注意:如果是标识符他不会产生驻留机制:
上面是规则,下面演示一下:
# 环境:PyCharm
s1 = "xianyu"
s2 = "xianyu"
s3 = "xianyu"
print(s1 == s2) # True
print(s1 is s2) # True
print(id(s1), id(s2)) # 2489056611312 2489056611312
s1 = "xianyu%"
s2 = "xianyu%"
print(s1 == s2) # True
print(s1 is s2) # True 因为这里是PyCharm环境所以为True ,如果 是 CMD中为 False 因为存在标识符 所以不会触发驻留机制
print(id(s1), id(s2)) # 1956230046832 1956230046832 如果CMD环境是不一样的,因为存在标识符 所以不会触发驻留机制
# 因为PCharm做了优化,无论如何下面都是True的,关于CMD的我也在下面截图。
s1 = -5
s2 = -5
print(s1 == s2) # True
print(s1 is s2) # True
s1 = -6
s2 = -6
print(s1 == s2) # True
print(s1 is s2) # True
字符长度为 0 或 为1 的字符串,只要是内容相同,那么就驻留触发:
交互模式:【各种条件:】
sys中的 intern :
import sys
s1 = "s2%%%"
s2 = sys.intern(s1)
print(s1 is s2) # 强制了 所以一定是 True
以上有些没列出,具体学习还得百度多看看别人的,这里其实也差不多了。
下面是字符串常用方法API 不做演示【用之前千万要百度一下用法实例!!!】:
![image-20221126171104314](img/image-20221126171104314.png
字符串的比较操作
== 是比较 字符串的值
is 是比较 字符串的id
切片操作 [start : end : step]
切片和以前的默认值一样 【具体自己去试即可】
其中,里面每一个字符串都是独立的。
字符串的格式化
这个非常容易也非常方便!
下面摘抄慕课网的笔记(因为我觉得写的很好):
在 Python 中使用反斜杠 \ 加字母的组合来表示一些特殊字符,例如:\n 表示换行,\ 之后的字符 n 的含义已经不再是原来 ASCII 字符的含义了,所以被称为转义字符。
常用的转义字符如下所示:
转义字符 | 描述 |
---|---|
\t | 制表 |
\n | 换行 |
\’ | ’ |
" | " |
\ | \ |
通过使用字符串 + 连接运算可以将多个字符串拼接起来,例如:
>>> name = 'tom'
>>> city = 'nanjing'
>>> 'My name is ' + name + ', I live in ' + city + '.'
'My name is tom, I live in beijing.'
在第 3 行,使用字符串 + 将以下 5 个字符串拼接起来:
- 'My name is ’
- name
- ', I live in ’
- city
- ‘.’
最终得到字符串 ‘My name is tom, I live in beijing’,像这样将多个字符串拼接起来的表达式非常不直观,Python 提供了字符串格式化用于简化拼接多个字符串。
format 方法
>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is {}, I live in city {}.'
>>> text.format(name, city)
'My name is tom, I live in beijing.'
- 在第 1 行,创建变量 name
- 在第 2 行,创建变量 city
- 在第 3 行,创建字符串 text,字符串中 % s 被称为占位符,text 中有两个占位符
- 在第 4 行,调用字符串 text 的 format 方法,该方法有两个参数:name 和 city
- 在第 5 行,将 text 中的两个占位符 % s 替换为这两个参数,得到最终的结果 ‘My name is tom, I live in beijing.’
与上一节使用 + 运算连接相比,格式化字符串显著的提高了程序的可读性。
% 运算符
>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is %s, I live in city %s.'
>>> text % (name, city)
'My name is tom, I live in beijing.'
- 在第 1 行,创建变量 name
- 在第 2 行,创建变量 city
- 在第 3 行,创建字符串 text,字符串中 % s 被称为占位符,text 中有两个占位符
- 在第 4 行,使用运算符 % 进行字符串格式化。运算符 % 有两个操作数,左边的操作数是字符串变量 text,右边的操作数是一个元组,元组中包含两个参数:name 和 city
- 在第 5 行,将 text 中的两个占位符 % s 替换为这两个参数,得到最终的结果 ‘My name is tom, I live in beijing.’
在实践中,通常直接将字符串与参数使用运算符 % 格式化,如下所示:
>>> name = 'tom'
>>> city = 'beijing'
>>> 'My name is %s, I live in city %s.' % (name, city)
'My name is tom, I live in beijing.'
如果有多个参数,需要将所有的参数保存在一个元组中;如果只有一个参数,可以不用保存在元组中,举例如下:
>>> name = 'tom'
>>> 'My name is %s.' % name
'My name is tom.'
在第 2 行,只有一个参数,可以不用将参数封装在元组中
占位符
% 是一个特殊的符号,后面跟着一个字符用于说明参数的类型:
- % s 表示字符串
- % d 表示整数
- % f 表示浮点数
有多种类型的占位符,初学时需要掌握如下常用的占位符:
符号 | 描述 |
---|---|
%% | 用于表示 % |
%c | 格式化字符及其 ASCII 码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%f | 格式化浮点数 |
- % s 用于格式化字符串
- % d 用于格式化整数
- % f 用于格式化浮点数
- %% 用于表示字符 % 本身
>>> name = 'tom'
>>> 'name is %s' % name
'name is tom'
>>> integer = 123
>>> 'integer is %d' % integer
'integer is 123'
>>> float = 123.456
>>> 'float is %f' % float
'float is 123.456000'
>>> a = 3
>>> b = 2
>>> c = a % b
>>> '%d %% %d = %d' % (a, b, c)
3 % 2 = 1
%% 是一个特殊的占位符,表示字符 % 本身。
print 方法
在实践中,通常使用 print 方法输出将格式化后的字符串,示例如下:
>>> name = 'tom'
>>> city = 'beijing'
>>> print('My name is %s' % name)
My name is tom
>>> print('My name is %s, I live in city %s.' % (name, city))
My name is tom, I live in beijing.
小结
字符串和数值一样,同样有基本的运算方式,但是最终得到的结果形式和数值却略有不同,大家在使用的时候要注意这一点。字符串的常用方法也需要大家多多练习和使用,可以把正文中的代码多敲几遍,一个好的程序员就是要多敲代码才能成长。
标签:city,name,s1,Python9,tom,字符串,My From: https://www.cnblogs.com/bi-hu/p/16929662.html