Но ведь случай с пустым куки нужно тоже обработать, и обработать точно так же как случай с кривым куки.
В питоне не нужно переменные объявлять заранее? Если нужно - почему ты этого не сделал? Говнокодик или охуенный язык, да здраствуют очепятки?
В javascript я могу проверить на undefined, чо в питоне такого нет?
"Научиться стрелять, не метясь, как ковбой,
для самообороны.
Зачем его обрабатывать? Вернуть тот же самый дефолтовый None.
Переменные объявлять не нужно. Понятия undefined как в js нету, есть возможность поймать исключение NameError
В ПХП тоже не нужно объявлять переменные. Ну и где Ваша риторика?
Ну как это зачем? В примере ж было написано # handle bad cookie что намекает на наличие здесь нескольких строк кода.
"Не нужно" или "не можно"?
Ты хотел сказать объявлять?Пользоваться возможность не определять переменные - яркий признак говнокодера, поздравляю тебя.
Я не пхпист как бы.
Нет такого понятия как "объявить переменную"
Ты хотел сказать объявлять?
Лол все пайтон, пхп, перл, руби кодеры -- говнокодеры. Отличное открытие)
Напрасно, все предпосылки имеются)
И да, сейчас мы говорим о том, что такое ПХП, и почему оно гавно. Не знающим ПХП тут делать нечего, поэтому прощу еще раз, мальчик, не мешай.
import time
def functionTest1(aCookies):
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except [B]([/B]ValueError, AttributeError[B])[/B]:
# handle bad cookie
pass
def functionTest2(aCookies):
lIntsCookie = aCookies.get("integers")
if lIntsCookie is not None:
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except [B]([/B]ValueError, AttributeError[B])[/B]:
# handle bad cookie
pass
def testFunction(aFunction, aWithoutRightCookie):
lTimeStart = time.time()
if aWithoutRightCookie:
lCookiesObj = dict(foo=1, bar=2)
else:
lCookiesObj = dict(foo=1, integers='1,2')
for i in range(1,1000000):
aFunction(lCookiesObj)
lTimeFinish = time.time()
print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)
testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)
void@faceless:~>python test.py
functionTest1. time elapsed: 4.70927000046
functionTest1. time elapsed: 1.88463807106
functionTest2. time elapsed: 0.371489048004
functionTest2. time elapsed: 2.17021489143
void@faceless:~>
Сейчас мы разбираем факт твоего говнокодерства. Потому слушай внимательно что тебе говорят более умные товарищи.
Чтото я видел среди твоих постов только наивные попытки чтото-сделать, которые заканчивались unhandled exception'ом
Ой не смеши больше, я тебя прошу
Notice то на первом скрине, а с кукой будет именно warning.
при этом выкинется notice (типа "нет такого ключа в массиве", это если notice'ы включены, а их отключают даже на девелоперских машинах, тем более на деплойных серверах, ниже об этом напишу). в пхп это нормально, можете отнести это на счет тупости пхп-шников, но так уж считается. они отключены по дефолту в php.ini.echo ($_COOKIE['integers'] === null);
не выкидывает даже notice.explode(',', null);
Здрасьте пожалуйста. Это Вы сами придумали, или гдето прочитали такие рекомендации? Я ожидаю наличие куки, но имею ее отсутствие. Логично? Если бы в ПХП была полноценная поддерка исключений, то юзали б и помалкивали.
Накропал мини-тест. Если что, поправляйте.
работает и с ними и без, только по разному. Как легко выстрелить себе в ногу.
HTTP/1.1 200 8.13 secs: 8257 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 200 8.15 secs: 8257 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 502 21.31 secs: 166 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 502 21.30 secs: 166 bytes ==> /newreply.php?do=postreply&t=1256512
Давайте таки вместо # handle bad cookie сделаем integers = [1,2,3,4] ато я смотрю иначе не понимают.
логика программы не должна описываться через механизм исключений. исключения - это для форс-мажорных ситуаций, когда нужно выдать сообщение об ошибке или сделать запись в логе.
да там и pass хватит. Сути это не меняет. Я к тому, что мой код в оговоренном случае 50 на 50 таки быстрее.
Не хватит, так как этот код не работает. Он не делает того что требуется.
Не нужнотему закрыть, крепеж снять, мудаков забанить
Все там работает: возращается None, чего еще нужно?
try:
integers = map(int, request.COOKIE.get("integers").split(","))
except (ValueError, AttributeError):
integers = [1,2,3,4]
request.COOKIE["integers"] = ",".join(map(str, integers))
import time
def functionTest1(aCookies):
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except (ValueError, AttributeError):
# handle bad cookie
pass
def functionTest2(aCookies):
lIntsCookie = aCookies.get("integers")
if lIntsCookie is not None:
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except (ValueError, AttributeError):
# handle bad cookie
pass
def functionTest3(aCookies):
try:
integers = map(int, aCookies.get("integers").split(","))
except (ValueError, AttributeError):
integers = [1,2,3,4]
aCookies["integers"] = ",".join(map(str, integers))
return integers
def functionTest4(aCookies):
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except (ValueError, AttributeError):
#integers = [1,2,3,4]
#aCookies["integers"] = ",".join(map(str, integers))
pass
def testFunction(aFunction, aWithoutRightCookie):
lTimeStart = time.time()
if aWithoutRightCookie:
lCookiesObj = dict(foo=1, bar=2)
else:
lCookiesObj = dict(foo=1, integers='1,2')
for i in range(1,1000000):
aFunction(lCookiesObj)
lTimeFinish = time.time()
print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)
testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)
testFunction(functionTest3, True)
testFunction(functionTest3, False)
testFunction(functionTest4, True)
testFunction(functionTest4, False)
v0id@faceless:~>python test.py
functionTest1. time elapsed: 4.52242398262
functionTest1. time elapsed: 1.82066702843
functionTest2. time elapsed: 0.375370979309
functionTest2. time elapsed: 2.1631000042
functionTest3. time elapsed: 2.30938005447
functionTest3. time elapsed: 1.8338508606
functionTest4. time elapsed: 4.43413496017
functionTest4. time elapsed: 1.80600380898
v0id@faceless:~>
Всё равно мой метод лучше.
import time
def functionTest1(aCookies):
integers = None
try:
integers = map(int, aCookies.get("integers").split(","))
return integers
except (ValueError, AttributeError):
integers = [1,2,3,4]
aCookies["integers"] = ",".join(map(str, integers))
return integers
def functionTest2(aCookies):
integers = None
lIntsCookie = aCookies.get("integers")
if lIntsCookie is not None:
try:
integers = map(int, aCookies.get("integers").split(","))
except (ValueError, AttributeError):
integers = [1,2,3,4]
aCookies["integers"] = ",".join(map(str, integers))
return integers
def functionTest3(aCookies):
integers = None
try:
integers = map(int, aCookies.get("integers").split(","))
except (ValueError, AttributeError):
integers = [1,2,3,4]
aCookies["integers"] = ",".join(map(str, integers))
return integers
def testFunction(aFunction, aWithoutRightCookie):
lTimeStart = time.time()
if aWithoutRightCookie:
lCookiesObj = dict(foo=1, bar=2)
else:
lCookiesObj = dict(foo=1, integers='1,2')
for i in range(1,1000000):
aFunction(lCookiesObj)
lTimeFinish = time.time()
print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)
testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)
testFunction(functionTest3, True)
testFunction(functionTest3, False)
v0id@faceless:~>python test.py
functionTest1. time elapsed: 2.39091181755
functionTest1. time elapsed: 1.84011697769
functionTest2. time elapsed: 0.420412063599
functionTest2. time elapsed: 2.20081305504
functionTest3. time elapsed: 2.34528493881
functionTest3. time elapsed: 1.83791017532