Найти - Пользователи
Полная версия: string1 is string2
Начало » Python для новичков » string1 is string2
1
polin11
Помогите разобраться с вопросом Python 3.3
print( is ) # 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
spikejke
- оператор==проверяет равенство значений двух объектов
- оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти
 >>> var = 'this is string'
>>> var1 = 'this is string'
>>> var is var1
False
>>> var == var1
True
#id(object) - Возвращает "адрес" объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта в течение срока его существования.
>>> id(var)
140251865741104
>>> id(var1)
140251865414448
polin11
spikejke
- оператор==проверяет равенство значений двух объектов
- оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти
Спасибо, я Вас понял, но какое, тогда утверждение правильное в ответах на вопрос
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 “==”
spikejke
polin11
К сожалению , я никак не могу связать вопрос с ответами.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB