最简单的方法来击败Python中的字符串实习



我有一个案例,我想击败字符串内部处理。

假设我的字符串是"foo bar"

我知道一些技巧性/不明显的方法可以击败练习弦乐。所有这些都涉及到在运行时计算表达式。

In [1]: my_str = "foo bar"
In [2]: my_new_str1 = " ".join(["foo", "bar"])
In [3]: my_new_str2 = "foo bar "[:-1]
In [4]: my_new_str3 = "foo " + "bar"
In [5]: id(my_str)
Out[5]: 4483028144
In [6]: id(my_new_str1)
Out[6]: 4483030192
In [7]: id(my_new_str2)
Out[7]: 4484125872
In [8]: id(my_new_str3)
Out[8]: 4484052336

有一个内置函数sys.intern,它实习一个字符串。我希望做完全相反的事情,而不是以简单/描述性的方式实习。

有什么东西可以打败在";"干净";方法

我想在联接周围放一个函数:

def new_str(s):
return ''.join(s)
>>> s='a string'
>>> s1=new_str(s)
>>> id(s)
4568404208
>>> id(s1)
4569455664
>>> s is s1
False

但我觉得这很傻。。。

您也可以将str划分为子类。

>>> class UninternedStr(str):
...   pass
... 
>>> s = UninternedStr('a string')
>>> s1 = UninternedStr('a string')
>>> s is s1
False

最新更新