Если вы объединяете множество значений, то ни то, ни другое. Добавление списка дорого. Вы можете использовать StringIO для этого. Особенно если вы создаете его для большого количества операций.
from cStringIO import StringIO
# python3: from io import StringIO
buf = StringIO()
buf.write('foo')
buf.write('foo')
buf.write('foo')
buf.getvalue()
# 'foofoofoo'
Если у вас уже есть полный список, возвращенный вам из какой-либо другой операции, просто используйте ''.join(aList)
Из часто задаваемых вопросов python: Каков наиболее эффективный способ объединить многие строки вместе?
Объекты str и байты неизменяемы, поэтому объединение нескольких строк вместе неэффективно поскольку каждая конкатенация создает новый объект. В общем случае общая стоимость исполнения равна квадрату в общей длине строки.
Чтобы скопировать много объектов str, рекомендуемая идиома состоит в том, чтобы поместить их в список и вызвать str.join () в конце :
chunks = [] for s in my_strings: chunks.append(s) result = ''.join(chunks)
(другая разумно эффективная идиома заключается в использовании io.StringIO)
Чтобы скопировать много объектов с байтами, рекомендуемая идиома заключается в расширении объекта bytearray с использованием конкатенации на месте (оператор + =):
blockquote>result = bytearray() for b in my_bytes_objects: result += b
Редактирование: я был глупым и имел результаты, вставленные назад, заставляя его выглядеть как добавление в список быстрее cStringIO. Я также добавил тесты для bytearray / str concat, а также второй раунд тестов, используя более крупный список с большими строками. (python 2.7.3)
Пример тестирования ipython для больших списков строк
try: from cStringIO import StringIO except: from io import StringIO source = ['foo']*1000 %%timeit buf = StringIO() for i in source: buf.write(i) final = buf.getvalue() # 1000 loops, best of 3: 1.27 ms per loop %%timeit out = [] for i in source: out.append(i) final = ''.join(out) # 1000 loops, best of 3: 9.89 ms per loop %%timeit out = bytearray() for i in source: out += i # 10000 loops, best of 3: 98.5 µs per loop %%timeit out = "" for i in source: out += i # 10000 loops, best of 3: 161 µs per loop ## Repeat the tests with a larger list, containing ## strings that are bigger than the small string caching ## done by the Python source = ['foo']*1000 # cStringIO # 10 loops, best of 3: 19.2 ms per loop # list append and join # 100 loops, best of 3: 144 ms per loop # bytearray() += # 100 loops, best of 3: 3.8 ms per loop # str() += # 100 loops, best of 3: 5.11 ms per loop
Общие сведения о файлах cookie
Файлы cookie передаются браузеру сервером. Браузер раскрывает файлы cookie как применимые только к домену, который изначально предоставил файлы cookie.
Данные в cookie-файле позволяют серверу продолжить, так сказать, разговор. Без куки сервер считает браузер впервые посетителем.
Ознакомьтесь с ними, чтобы узнать о файлах cookie браузера
Общие сведения о файлах cookie браузера
http: // internet-security .suite101.com / article.cfm / понимание_компьютера_browser_cookies
http://www.willmaster.com/library/cookies/understanding-cookies.php
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-22_11-6063884.html
Обычно файл cookie содержит идентификационный номер сеанса. Идентификационный номер затем подключается к данным сеанса, которые хранятся на сервере. Обычный процесс:
Обычно пароль отправляется не более одного раза (при входе в систему на шаге 1).
Файлы cookie представляют собой небольшие пакеты данных , которые веб-страницы загружают в браузер для различных целей.
Каждый раз, когда вы повторно посещаете URL, браузер отправляет крошечный пакет этой информации обратно на сервер, который обнаруживает, что вы вернулись на страницу.
Зависит от того, существует ли много сценариев и возможностей использования cookie-фреймворка.
Одним из сценариев является:
Для более подробной информации читайте Статья Википедии о cookie-файлах.
.