Как бывший любитель WoW — подтверждаю. Если в ПвЕ достаточно кнопок клавиатуры (хотя и далеко не всегда), то в ПвП все иначе. У меня было забиндено на мышке 5 спеллов + 5 еще пять на шифт+клик (шифт обычный, на клавиатуре), и все равно чувствовалась нехватка дополнительных кнопок.
В питоне есть одни интересные грабли, которых я не встречал в других языках: выражения x = x + y и x += y могут быть неидентичны. Пример:
def func1(l):
l = l + [None]
return l
def func2(l):
l += [None]
return l
my_list = [1, 2, 3]
# Казалось бы, две идентичные функции
L1 = func1(my_list)
L2 = func2(my_list)
print(L1 == L2) # True
# И даже результаты равны. А подвох в том, что
print(my_list) # [1, 2, 3, None]
Проблема в том, что оператор += для списка неявно обрабатывается как list.extend(), который, в свою очередь, изменяет текущий список, а не создает новый. Это происходит из-за того, что питон позволяет перегружать не только оператор + (__add__), но и оператор += в отдельности (__iadd__). Для списков это сделано из-за скорости — extend работает быстрее. Разумеется, это есть в документации. Но наступить на эти грабли крайне легко.
Выше вам уже ответили. Для любых последовательностей (коими являются и строки, и списки) оператор * означает повторение. Это не «специальный случай», а задокументированная особенность ЛЮБЫХ последовательностей. Я, однако, не вижу ей особого применения.
А вот оператор + в вашем примере уже вызовет ошибку.
Разумеется, странно, если вы не читали документацию. В питоне все типы делятся на два — mutable, immutable (числа, строки, таплы, фрозенсеты). Причем операция присваивания всегда создает ссылку, независимо от типа. Различия проявляются потом, когда вы явно пытаетесь изменить переменную.
a = 1234567
b = a
a == b # True
a is b # True - ссылаются на один и тот же объект
b = 1234567
a == b # True
a is b # False - ссылаются на разные объекты
Числа/строки/таплы/фрозенсеты нельзя менять непосредственно. Никак. Строки поддерживают выборку по индексу, но изменить себя не дадут:
s = 'Hello'
s[1] # e
s[1] = 't' # TypeError: 'str' object does not support item assignment
С другой стороны, списки, словари и оставшиеся объекты — mutable. И т.к. операция присваивания в питоне работает везде одинаково (она просто создает ссылку на объект) — вы получаете то, что получаете.
А что вам кажется неодназначным? Оператор * для строк — это повторение. Что вы запросили у интерпретатора (повтори мне эту строку 5 раз) — то и получили.
Очень хороший ход с их стороны. Учитывая популярность стима, количество игр, простоту настройки и отсутствие необходимости в сторонних программах — взлетит. Правда, 99% стримов будут никакими.
У твича, кстати, политика примерно такая же. Игра Path of Exile, например, прямо в игровых опциях имеет настройки для стриминга на твиче.
Я пока что (тьфу-тьфу-тьфу) с преступностью не сталкивался. Кражи происходят частенько, грабят квартиры или угоняют байки. В большинстве случаев — из-за безалаберности владельца: не закрыли окна, не заблокировали байк. При должном уровне контроля за своими вещами вероятность кражи можно свести к минимуму. Кхмеры подторговывают наркотиками, в туристической зоне ночью вас точно встретит пара-тройка человек с вопросом «Do you want something?». Поговаривают, что у них можно купить хоть черта лысого, но я не пробовал, не любитель. Про разбои или убийства ни разу тут не слышал. (Повторюсь, что говорю только о Сиануквиле, где живу)
Тут попроще с полицейскийми, они не такие строгие, как в Тае. К тому же, Камбоджа крайне коррумпированная страна, штрафы за езду они берут не стесняясь.
Расскажу про Сиануквиль, в котором живу. Курортный город, располагается на берегу Сиамского залива. Соотвественно, красивое и теплое море — под боком.
Из-за того, что город курортный и рассчитан на туристов, тут все хорошо и с инфраструктурой. Я тут только боулинг не нашел.
Есть два крупных отеля — Индепенденс и Соха, на их территории располагаются различные «ништяки» типа качалок, полей для большого тенниса, саун, бассейнов. Абонементы недорогие.
Клиники на очень хорошем уровне, я тут сам операцию перенес. Стоимость лечения варьируется, но в больших и хороших клиниках цены были ниже московских. Почему «были»? Вырос курс, поднялись цены по отношению к рублю (в долларах не изменились). Поднялись ли они так же в Москве — не знаю, но учитывая, что, например, в стоматологии используется много зарубежных материалов, цены должны были вырасти.
Жилье — в зависимости от ваших потребностей. Вменяемые квартиры стоят по $200-300 в месяц. Мы сразу же решили, что хотим дом, и снимаем по $500. Электричество дорогое, с 2мя кондеями, стиральной машинкой и холодильником выходит около $150 в месяц.
Еда стоит копейки. В ресторанах, если отъехать от туристической зоны и пляжа, где цены всегда в 2-3 раза выше, можно легко поесть на 3-4 бакса досыта. Если вы тут обжились и ходите на рынок, и готовите сами — то траты на еду становятся меньше еще в 2-3 раза.
x = x + yиx += yмогут быть неидентичны. Пример:Проблема в том, что оператор += для списка неявно обрабатывается как list.extend(), который, в свою очередь, изменяет текущий список, а не создает новый. Это происходит из-за того, что питон позволяет перегружать не только оператор + (__add__), но и оператор += в отдельности (__iadd__). Для списков это сделано из-за скорости — extend работает быстрее. Разумеется, это есть в документации. Но наступить на эти грабли крайне легко.
А вот оператор + в вашем примере уже вызовет ошибку.
Разумеется, странно, если вы не читали документацию. В питоне все типы делятся на два — mutable, immutable (числа, строки, таплы, фрозенсеты). Причем операция присваивания всегда создает ссылку, независимо от типа. Различия проявляются потом, когда вы явно пытаетесь изменить переменную.
Числа/строки/таплы/фрозенсеты нельзя менять непосредственно. Никак. Строки поддерживают выборку по индексу, но изменить себя не дадут:
С другой стороны, списки, словари и оставшиеся объекты — mutable. И т.к. операция присваивания в питоне работает везде одинаково (она просто создает ссылку на объект) — вы получаете то, что получаете.
У твича, кстати, политика примерно такая же. Игра Path of Exile, например, прямо в игровых опциях имеет настройки для стриминга на твиче.
Из-за того, что город курортный и рассчитан на туристов, тут все хорошо и с инфраструктурой. Я тут только боулинг не нашел.
Есть два крупных отеля — Индепенденс и Соха, на их территории располагаются различные «ништяки» типа качалок, полей для большого тенниса, саун, бассейнов. Абонементы недорогие.
Клиники на очень хорошем уровне, я тут сам операцию перенес. Стоимость лечения варьируется, но в больших и хороших клиниках цены были ниже московских. Почему «были»? Вырос курс, поднялись цены по отношению к рублю (в долларах не изменились). Поднялись ли они так же в Москве — не знаю, но учитывая, что, например, в стоматологии используется много зарубежных материалов, цены должны были вырасти.
Жилье — в зависимости от ваших потребностей. Вменяемые квартиры стоят по $200-300 в месяц. Мы сразу же решили, что хотим дом, и снимаем по $500. Электричество дорогое, с 2мя кондеями, стиральной машинкой и холодильником выходит около $150 в месяц.
Еда стоит копейки. В ресторанах, если отъехать от туристической зоны и пляжа, где цены всегда в 2-3 раза выше, можно легко поесть на 3-4 бакса досыта. Если вы тут обжились и ходите на рынок, и готовите сами — то траты на еду становятся меньше еще в 2-3 раза.