Наверняка вы замечали, что в Python есть удобная функция для получения переменной окружения
os.getenv(NAME)
И её "сестра" для создания или изменения переменных окружения
os.putenv(NAME, VALUE)
Но почему-то putenv() не работает как должно. Энвайромент не обновляется!
os.putenv('MYVAR', '1')
print(os.getenv('MYVAR'))
... и ничего 😴
Почему так?
На самом деле энвайромент обновляется, но это значение не добавляется в словарь os.environ.
Откройте исходник функции os.getenv(). Это просто шорткат для os.environ.get()
В то время как putenv() это built-in С-функция.
Словарь os.environ (или точней класс из MutableMapping) создаётся из энвайромента в момент инициализации. Функция putenv() самостоятельно его не изменяет.
В тоже время, когда вы создаёте или изменяете ключ в os.environ, автоматически вызывается putenv() в методе __setitem__().
То есть, технически putenv() всё делает верно, но в os.environ это не отражается. Можно проверить так:
>>> os.putenv('MYVAR', '123')
>>> os.system('python -c "import os;print(os.getenv(\'MYVAR\'))"')
123
Я объявил переменную в текущем процессе и вызвал дочерний процесс, который её унаследовал и получил в составе os.environ.
Аналогично при удалении переменной вызывается еще одна built-in функция unsetenv(), удаляющая переменную из системы.
Итого
▫️ Удобней всего явно обновлять переменные через os.environ
▫️ Есть способ неявно создать/удалить переменную через putenv/unsetenv, что не повлияет на os.environ но изменит энвайромент и передаст изменения сабпроцессам. Но так лучше не делать!
▫️os.environ это просто обертка для built-in функций putenv() и unsetenv().
#basic
Первый случай за всё существование канала — рубрика «Дуга ебейшая» в… хоккее? 🏒
Что это было?! Это Уайтт Джонстон из «Даллас Старз» ставит точку в матче с «Миннесотой», отправляя шайбу в пустые. Но посмотрите на траекторию…
Шайба уже уходила мимо и защитник «Уайлд» Куинн Хьюз даже перестал бежать и решил, что будет проброс — но… шайба взяла и завернула в створ по идеальной дуге.
Магнит? Магия? Чистая физика!
😎Ozzy в MAX | #Хоккей#NHL
«Нашёл щёлочку» — снайперский выстрел Капризова в самую девять 🎯
Кирилл Зэ Трилл набрал 1+2 с победным голом в первом матче серии с «Далласом» и был признан второй звездой матча — теперь на счету 28-летнего россиянина стало 24 (16+8) очка в 26 играх в плей-офф НХЛ за карьеру и это повторение рекорда «Миннесоты».
😎Ozzy в MAX | #Хоккей#NHL
Давно не было этого парня в ленте 🛩
Матвей Мичков набрал 1+2 с победным голом в матче против «Монреаля» и был признан первой звездой матча и второй звездой дня в НХЛ — теперь на его счету 20+31 в 81 игре сезона.
Подведём итоги сезона для 21-летнего русского из «Филадельфии» — второй сезон подряд подряд 20+ голов и 50+ очков, он четвертый снайпер и четвертый же бомбардир клуба.
👏 — красавчик
🤓 — я ожидал большего
😎Ozzy в MAX | #Хоккей#NHL
Красота дня в НХЛ — Джек Айкел и его глаза на затылке 👀
Это парни из «Вегас Голден Найтс» разыграли идеальную комбинацию — Джек Айкел, проезжая за воротами, отдал роскошный ноулук-ассист на Барбашева.
Ивану оставалось просто не промахнуться в пустой угол — у него 1+1 в матче и 23+38 в 81 игре в сезоне при полезности «+20». Достойно!
PS. С вратарём «Виннипега» после гола случился эталонный мем «АЧО ВСМЫСЛЕ?» — кажется, он так и не понял, что с ним произошло 😁
😎Ozzy в MAX | #Хоккей#NHL
Русская красота дня в НХЛ — шедевр от Биг Вэла 🧨
Это Валерий Ничушкин из «Колорадо Эвеланш» сделал дубль с «Сент-Луисом» и был признан первой звездой матча — теперь на его счету 17+30 очков в 67 играх в сезоне при полезности «+8».
Второй гол получился особенно кайфовым — Вэл забил в меньшинстве броском из-под ноги.
😎Ozzy в MAX | #Хоккей#NHL
Роскошная комбинация «Тампы» и гол номер 400 от Никиты Кучерова 😍
Куч забил «Баффало» свой 400-й гол в регулярных чемпионатах НХЛ — всего на его счету 1120 (400+720) очков в 874 матчах за карьеру.
Что же касается текущего сезона, то теперь у русского могучего форварда 126 (43+83) очков в текущем сезоне в 71 игре и он догнал Коннора Макдэвида в гонке бомбардиров — у того те же (43+83), но в 77 матчах сезона.
А ещё:
⏺Кучеров — второй игрок с 400+ голами за «Тампу» в НХЛ. У Стэмкоса — 555.
⏺Кучеров — восьмой россиянин в истории НХЛ с 400+ шайбами в регулярках, а среди начавших карьеру в XXI веке — четвертый. Ранее такое достижение покорилось — Овечкину (928 голов в 1569 играх), Малкину (532 в 1267), Федорову (483 в 1248), Могильному (473 в 990), Ковальчуку (443 в 926), Буре (437 в 702) и Ковалеву (430 в 1316).
😎Ozzy в MAX | #Хоккей#NHL
«Kid Line» «Детское звено Шаркс» решает 🦈
Это тройка «Сан-Хосе» Селебрини — Смит — Чернышов организовала победный гол в ворота «Коламбуса» — суммарный возраст этого звена всего 60 лет (19+21+20).
Игорь Чернышов оформил первый дубль в НХЛ — у 20-летнего русского форварда «Сан-Хосе» 5+9 в 19 играх в сезоне.
«Акулёнок ту-ру-ру-ру»
😎Ozzy в MAX | #Хоккей#NHL
🦅
1️⃣
1️⃣
1️⃣ Великий внезапно пульнул в «Юту» хет-триком
3 — гола в матче
34 — хет-триков в лиге в рамках регулярок и это четвертое место в истории НХЛ по этому показателю
29+27 — 56 очков в 73 матчах чемпионата
926 — голов в карьере в регулярках
1003 — гола в карьере с учетом плей-офф
9 — матчей осталось сыграть в чемпионате
13 — до Гретцки
😎Ozzy в MAX | #Хоккей#NHL
Немного хоккейного волшебства вам в утреннюю ленту — что-то на Дацюкском 🪄
Это Артемий Панарин из «ЭлЭй Кингз» в серии буллитов исполнил что-то ультрастильное — вначале Хлебушек обманными движениями уложил вратаря соперника на живот как пингвина, а потом запустил ему за шиворот парашютик в стиле Павла Дацюка.
😎Ozzy в MAX | #Хоккей#NHL