Tishka17
Что за догматизм?
Когда-нибудь я осилю и напишу развернутое описание почему это плохо. А пока можешь погуглить
/warn
Что за догматизм?
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). Глобальные переменные ухудшают масштабируемость проекта. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). Глобальные переменные создают большие сложности при использовании модульного тестирования. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Tishka17
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). Глобальные переменные ухудшают масштабируемость проекта. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). Глобальные переменные создают большие сложности при использовании модульного тестирования. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Я, пожалуй, схороню.
Denis
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). Глобальные переменные ухудшают масштабируемость проекта. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). Глобальные переменные создают большие сложности при использовании модульного тестирования. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Логгинг в питоне построен на глобальных переменных. По-твоему, им нельзя пользоваться?
/warn
Это разные вещи
Aragaer
это "локальные" глобальные переменные
Aragaer
если я пользуюсь глобальными переменными, то начинаю их имена с _
Denis
Не вижу разницы между глобальным коннектом к бд и глобальным логгером
Tishka17
Логгинг в питоне построен на глобальных переменных. По-твоему, им нельзя пользоваться?
Увы, приходится жертвовать в данном случае. Хотя в идеале конечно логгер тоже надо инжектировать
Aragaer
тем самым я ограничиваю работу с этой переменной только теми функциями, которые живут в этом же контексте
Aragaer
_db = None def connect(): global _db _db = do_connect() def query(teh_query): return _db.query(teh_query)
/warn
Не вижу разницы между глобальным коннектом к бд и глобальным логгером
Помню бота под телегу пилил, так при глобальном конекторе вылетала ошибка, что конектор определён в другом потоке
Aragaer
при этом слежу, чтобы ни одна собака к моему _db напрямую не обратилась
Anonymous
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение). Глобальные переменные ухудшают масштабируемость проекта. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет). Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял). Глобальные переменные создают большие сложности при использовании модульного тестирования. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Иче? Я про догматизм. Мастабируемость не всегда нужна, читаемость кода не всегда ухудшается и дальше по пунктам.
Aragaer
мастабируемость это такой гибрид между маштабируемостью и мастурбацией?
Anonymous
Кстати, верно подмечено. Даже исправлять не буду
Tishka17
Иче? Я про догматизм. Мастабируемость не всегда нужна, читаемость кода не всегда ухудшается и дальше по пунктам.
1. Масштабируемость нужна когда-нибудь, а код уже написан 2. Читаемость ступудово ухудшается при увеличении размера кода 3. Тестировать становится невозможно
Tishka17
1. Что значит когда-нибудь? Откуда это вообще полезло то? 2. Нет. 3. Нет.
1. Это значит, что если ты пишешь не для себя скрипт, а которым будут пользоваться другие, он будет расти 2. Да 3. Да.
Tishka17
Вот и поговорили
Anonymous
Ага. Просто ты мыслишь догматами, а я нет.
Aragaer
когда мой код перейдет в состояние "я с кем-то поделился", то либо я решу, что "пора тут от глобальных переменных избавиться", либо не решу, но тогда буду готов к "а вот тебе пуллреквест убрать эти переменные"
Tishka17
Ага. Просто ты мыслишь догматами, а я нет.
Я мыслю, что не использование глобальных переменных даёт меньше проблем, чем их использование
Aragaer
использование глобальных переменных это "а щас я быстренько нафигачу" и "о, оно заработало, но мне исправлять лень"
Aragaer
В остальном надо привить себе отвращение к глобальным переменным. Это как в фехтовании. Надо привить себе ощущение "мне неуютно, когда чужой клинок направлен в меня и находится ближе 20 см от моего корпуса"
Anonymous
пожалуйста ! помогите запустить софт в песочнице на убунте браузер multilogin
Anonymous
а то софт прписался - и триал слетел
Anonymous
где то закрепился в ситсеме непойму где
Anonymous
использование глобальных переменных это "а щас я быстренько нафигачу" и "о, оно заработало, но мне исправлять лень"
Опять догматизм какой-то. Привить, не привить. Было бы с ними так все печально - уже бы выпилил нахрен. ВОт у меня крутится демон, в ядре которого пара стеков глобальных. Они нужны только под пару вещей. Лезть туда не нужно. Перепил резко усложит структуру кода до оверхеда. Работает заебись. Какие еще вопросы? Что какая-то обезьяна после меня полезет перепиливать и столкнется с трудностями?
Aragaer
а теперь минутка пеп8
Aragaer
Global Variable Names (Let's hope that these variables are meant for use inside one module only.) The conventions are about the same as those for functions. Modules that are designed for use via from M import * should use the all mechanism to prevent exporting globals, or use the older convention of prefixing such globals with an underscore (which you might want to do to indicate these globals are "module non-public").
Anonymous
и? Кто-то импортится from M import *?
/warn
«Пеп написан людьми которые мыслят догмами»)
Alex
а.. так это маркуша
Anonymous
а.. так это маркуша
С просветлением)
Anonymous
Напишите в лс,кто как изучал питон,что лучше всего учить.
Aragaer
книга learn python the hard way
Anonymous
Изи
Как?
valdemar
name=input() print("Hello, {0}".format(name))
valdemar
Вроде так
valdemar
Name имя
Vadik
Name имя
А пользователь в консоль что ли будет имя вводить?
valdemar
Ну да
valdemar
Или всмысле?
valdemar
Вы же бота делаете)
valdemar
Я идею дал
Alexey
А пользователь в консоль что ли будет имя вводить?
Открой 22 порт и включи sshd. Пусть пользователь логинется и вводит имя в консоль
Vadik
Ну да
Он делает бота для телеграмм, на сколько я понимаю, то телега возвращает данные в каком+то формате, в ответ на запрос, и из них нужно извлекать имя пользователя
valdemar
Я в ботах телеграм ничего не знаю
Vadik
Я тоже не знаю. Я дал ответ основываясь на апи вк
valdemar
Для этого есть отдельный чат в телеграм
Vadik
Скорее всего у них принцип одинаков
Vadik
Ну открой документацию, а
Для чего мне открывать документацию? Не я задавал вопрос
Tishka17
Сорри
Кіт ✙
https://pastebin.com/EBV45kcP шифр цезаря, дешифровщик. С ключём оно прекрасно шифрует, а вот если режим без ключа - постоянно кидает ValueError, какой-то символ в списке не находит
Кіт ✙
в режиме с ключём все прекрасно дешифрует, и оттуда я и скопировал, чутка модифицировав
Aragaer
вот у тебя есть print
Aragaer
слабо в нем распечатать letter?
Aragaer
и на всякий случай ord от этого letter
Anonymous
как клонировать репу с gitlab.com
Anonymous
она приватная, а гит говорит что у меня нет првав
Anonymous
даже пароль не просит
Anonymous
🤢
Andrey
Клонируешь по ссш или хттп?
Anonymous
Клонируешь по ссш или хттп?
как заработает так и буду)
Anonymous
хттп наверно
Andrey
В смысле наверное, в адресе что написано?)
Anonymous
git clone https://gitlab.com/ret/et....git
Anonymous
как его заставить проссить пароль?