|
string1 is string2
|
|||
---|---|---|---|
#18+
Помогите разобраться с вопросом Python 3.3 print([1,2,3] is [1,2,3]) # false print("1,2,3" is "1,2,3") #true Why are thee different return values Answer: 1) list are not evaluted as equal, because elements of list may be changed in place 2) every sequence object is unique, even if two sequence objects contain the same elements 3) string values are an immutable sequence type in Python, and so two equal strings always refer to the same object 4) strings are immutable objects and Python shares values for immutable values whenever possible 5) for string comparisons id is internally implemented as an alias for "==" Насколько понимаю оператор is проверяет идентичность объекта, Python проверяет, являются ли два строковых объекта string1 и string2 действительно одним и тем же объектом (т. Е. живут по одному и тому же адресу в памяти). Python создает только один строковый объект, и на него могут ссыласться 2 переменные. Причина в том, что Python внутренне кэширует и использует несколько строк в качестве оптимизации, на самом деле в памяти есть только одна строка. Если использовать более длинные строки, то string1 is string2 будет false (по крайней мере это выполнялось в python 2.) Но в python 3.3 сколько бы я не увеличивал размер строк string1 is string2 будет true ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2018, 05:28 |
|
|
start [/forum/topic.php?fid=23&gotonew=1&tid=1460322]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 437ms |
0 / 0 |