#第61天
#字符串的驻留机制
'''
字符串:python中基本数据类型,是一个不可变的序列【目前我们学了两个:元组、字符串】
可以使用单引号,双引号,三引号来定义
'''
#定义字符串
a='python'#用单引号,双引号,三引号来定义字符串python
b="python"
c='''python'''
print(a,id(a))#输出字符串并查看id
print(b,id(b))
print(c,id(c))
'''
你会发现输出内容相同,id(内容地址)也相同
说明a,b,c在内存中只有一份
'''
如图:
'''
字符串驻留机制:
仅仅只保留一份相同且不可变的字符串的方法,不同的值被放在字符串的驻留池中,python的驻留机制对相同的字符串值保留一份。
后续创建相同的字符串时,不会开辟新的空间,而是把该字符串的地址(id)赋给新的变量。
'''
#驻留机制的几种情况(处于交互模式下)
'''
交互模式:交互模式是指人与计算机、设备或系统之间进行实时、双向的信息传递和操作的模式
目前我们本节我们打开方式如下:
键盘按下Windows+R键
然后输入cmd即可
然后输入python,按下Enter键;即可
注【交互模式只能单行注释】因为在交互模式下,每输入一行代码就会立即执行
'''
#如图为交互模式下
为了方便读者复制,我全部复制到了下方这个python文件里面了
C:\Users\Admin>python
Python 3.9.13 (main, Aug 25 2022, 23:51:50) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
>>> #驻留情况①字符串的长度为0或者1时
>>> s1=''#建立两个空字符串s1和s2,空字符串长度为0,为s1和s2
>>> s2=''
>>> s1 is s2
True
>>> #输出s1 is s2发现输出为True,说明他们的地址内存是相同的,这是字符串长度为0的情况
>>> s3='%'#创立两个字符串长度为1的两个字符串s3和s4
>>> s4='%'
>>> s3 is s4#查看内存地址
True
>>> #发现内存地址还是相同,所以第①中情况成立
>>> #注:每次写完一行按下enter键即可输出,注释不输出
>>> #驻留情况②符合标识符的字符串
>>> #含有字母、数字、下划线的字符串称为符合标识符的字符串
>>> s5='abc%'#创立两个字符串
>>> s6='abc%'
>>> s5==s6
True
>>> #s5==s6比较的是他们的内容你会发现内容相同
>>> s5 is s6#比较他们的地址是否一样
False
>>> #发现地址不一样,说明开的是两块空间
>>> #然后我们查看id
>>> id(s5)
1454021673008
>>> id(s6)
1454021673072
>>> #发现地址不相同,所以s5和s6内容相同,地址不同
>>> #如图三
>>> #现在我们来使用标识符的字符串
>>> s7='abcx'
>>> s8='abcx'
>>> s7 is s8
True
>>> #会发现产生了驻留,然后我们查地址
>>> id(s7)
1454021673968
>>> id(s8)
1454021673968
>>> #地址相同
为什么abc%不同
'''在编程中,标识符是用来命名变量、函数、类、模块等程序实体的名称。标识符可以包含字母、数字和下划线,并且必须遵循以下规则:
标识符由字母(a-z、A-Z)、数字(0-9)和下划线(_)组成。
标识符不能以数字开头,但可以在首字符后使用数字。
标识符区分大小写,例如count和Count是不同的标识符。
标识符不能与Python的保留关键字(如if、for、while等)重复。
标识符应具有描述性和易于理解的命名,以增加代码的可读性。
本节
abc%不是合法的标识符,因为它违反了Python标识符的命名规则。具体来说:
标识符只能由字母、数字和下划线组成,而%不是这些字符之一,因此它不能作为标识符的一部分。
标识符必须以字母或下划线开头,而%既不是字母也不是下划线,因此它不能用作标识符的开头。'''
至于为什么这么多天没有更新,是因为我这几个月发生了一些事。导致我的生活变得一团糟,我目前正在努力恢复中,可能后续会更新有点快,如果觉得学得多了,可以两天学一节或者三天。
借此还提醒大家,我不顺其中一个主要原因是被诈骗了。
被骗金额达到了1500,希望看到这篇文章的人,远离网上高收入广告,谨防诈骗,让你赚钱的一律拉黑,不管你多么想赚钱。都要知道天下没有免费的午餐,以及打着为你好的,让你赚大钱幌子。
希望大家守护好自己的钱包