管这个问题在实际中没有任何实际用途,但我对Python如何进行字符串实习感到好奇。我注意到以下内容。
>> "string" is "string"
>> True
>
这是我所期望的。
您也可以这样做。
>> "strin"+"g" is "string"
>> True
>
那真是太聪明了!
但是你不能这样做。
>> s1 = "strin"
>> s2 = "string"
>> s1+"g" is s2
>> False
Python为什么不评估s1+"g"
,并意识到它s1与指向相同的地址相同?最后一个块到底在做什么False呢?
这是特定于实现的,但是你的解释器可能是内部编译时常量,而不是运行时表达式的结果。
接下来,我使用CPython 2.7.3。
在第二个示例中,表达式"strin"+"g"
在编译时求值,并替换为"string"
。这使得前两个示例的行为相同。
如果我们检查字节码,我们会发现它们完全相同:
# s1 = "string"
2 0 LOAD_CONST 1 ('string')
3 STORE_FAST 0 (s1)
# s2 = "strin" + "g"
3 6 LOAD_CONST 4 ('string')
9 STORE_FAST 1 (s2)
第三个示例涉及运行时串联,其结果不会自动中断:
# s3a = "strin"
# s3 = s3a + "g"
4 12 LOAD_CONST 2 ('strin')
15 STORE_FAST 2 (s3a)
5 18 LOAD_FAST 2 (s3a)
21 LOAD_CONST 3 ('g')
24 BINARY_ADD
25 STORE_FAST 3 (s3)
28 LOAD_CONST 0 (None)
31 RETURN_VALUE
如果要手动intern()执行第三个表达式的结果,则将获得与以前相同的对象:
>>> s3a = "strin"
>>> s3 = s3a + "g"
>>> s3 is "string"
False
>>> intern(s3) is "string"
True
问题内容: 为什么Python仅内置字符串?应该可以扩展到可哈希和可比较的类,对吗? 问题答案: 内联事物的目的是能够通过比较它们的内存地址来进行比较。您要确保永远不要创建两个具有相同值的对象(当程序请求创建一个与现有对象具有相同值的第二个对象时,它会收到对先前存在的对象的引用)。这要求你要实习的东西是 不变的 ; 如果一个被拘禁对象的值可以改变,那么按地址比较它们是行不通的。 在Python中,
主要内容:处理字符串中的引号的,字符串的换行,Python长字符串,Python原始字符串若干个字符的集合就是一个 字符串(String)。 Python 中的字符串必须由双引号 或者单引号 包围,具体格式为: "字符串内容" '字符串内容' 字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字。 下面都是合法的字符串: "123789" "123abc" "https://www.xnip.cn/python/" "小牛知识库成立8年了" Python 字符串中的双
问题内容: 这个简单的代码仅尝试用冒号替换分号(在i指定的位置)不起作用: 它给出了错误 如何解决此问题,以冒号代替分号?使用replace不起作用,因为该函数不占用索引-可能有一些我不想替换的分号。 例 在字符串中,我可能有许多分号,例如 我知道我想替换哪些(我在字符串中有索引)。使用替换无法正常工作,因为我无法对其使用索引。 问题答案: python中的字符串是不可变的,因此你不能将它们视为列
问题内容: 我正在使用Beautiful Soup 3解析一些HTML,但是它包含HTML实体,Beautiful Soup 3不会自动为我解码: 如何解码HTML实体text以获得而不是。 问题答案: Python 3.4以上 用途: FYI html.parser.HTMLParser.unescape已弃用,并且应该在3.5中删除,尽管它是错误地保留的。它将很快从语言中删除。 Python
本文向大家介绍Python实现字符串的逆序 C++字符串逆序算法,包括了Python实现字符串的逆序 C++字符串逆序算法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python/C++实现字符串逆序的具体代码,供大家参考,具体内容如下 题目描述:将字符串逆序输出 Python实现一: 借助于列表的reverse()函数,需要注意的是,该函数没有返回值,只会让列表原地逆序 借助于
本文向大家介绍Python字符串替换实例分析,包括了Python字符串替换实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python字符串替换的方法。分享给大家供大家参考。具体如下: 单个字符替换 输出结果为:abcd 字符串替换,改善版 输出结果为:hello, i'm mr, hoho~~,hoho~~mrmr 希望本文所述对大家的Python程序设计有所帮助。