2024-03-29 12:40:38 发布
网友
在python中比较字符串时,例如
if "Hello" == "Hello": #execute certain code
我很好奇比较字符串的代码是什么。所以如果我在c语言中比较这些字符,我会比较每个字符,当其中一个字符不匹配时中断。我想知道这样比较两个字符串到底是什么过程,也就是说,它什么时候会断开,除了代码行中的冗余之外,这个比较和上面提到的方法之间是否有任何区别
我假设你用的是CPython,标准的Python.org网站实施。实际上,Python字符串类型是用C实现的,所以是的,测试两个字符串是否相等的工作与在C中进行的完全一样
它的作用是使用^{} function测试两个str对象是否包含相同的数据,请参见^{} function defined in ^{}:
str
static int unicode_compare_eq(PyObject *str1, PyObject *str2) { int kind; void *data1, *data2; Py_ssize_t len; int cmp; len = PyUnicode_GET_LENGTH(str1); if (PyUnicode_GET_LENGTH(str2) != len) return 0; kind = PyUnicode_KIND(str1); if (PyUnicode_KIND(str2) != kind) return 0; data1 = PyUnicode_DATA(str1); data2 = PyUnicode_DATA(str2); cmp = memcmp(data1, data2, len * kind); return (cmp == 0); }
只有当str1和str2不是同一个对象时,才调用此函数(这是一个简单且廉价的测试方法)。它首先检查两个对象的长度是否相同并且存储的数据类型是否相同(字符串对象使用flexible storage implementation来节省内存;不同的存储意味着字符串不能相等)。在
str1
str2
还有其他的Python实现,比如Jython或IronPython,它们可能使用不同的技术,但基本上可以归结为大致相同的事情。在
我假设你用的是CPython,标准的Python.org网站实施。实际上,Python字符串类型是用C实现的,所以是的,测试两个字符串是否相等的工作与在C中进行的完全一样
它的作用是使用^{} function 测试两个} function defined in ^{} :
str
对象是否包含相同的数据,请参见^{只有当
str1
和str2
不是同一个对象时,才调用此函数(这是一个简单且廉价的测试方法)。它首先检查两个对象的长度是否相同并且存储的数据类型是否相同(字符串对象使用flexible storage implementation来节省内存;不同的存储意味着字符串不能相等)。在还有其他的Python实现,比如Jython或IronPython,它们可能使用不同的技术,但基本上可以归结为大致相同的事情。在
相关问题 更多 >
编程相关推荐