
Simple boy
23.04.2019
17:58:41
С чем связано?
В интернете объяснения толкового не нашёл

Yaroslav
23.04.2019
18:12:35

Google

Yaroslav
23.04.2019
18:12:42
такое ощущение, что прав нет)

Simple boy
23.04.2019
18:12:46
Хм...
Попробуем
Завтра отпишу

Yaroslav
23.04.2019
18:13:31
и в винде вроде dir куманда для отображения каталогов.
ls - Linux.
dir - Windows

Simple boy
23.04.2019
18:14:05

Oleg
23.04.2019
18:20:22
Ребят, здравствуйте! Такая ситуация: в одном модуле есть переменная database=None и функция connect. Функция connect занимается тем, что берёт переменную database как global и засовывает в неё другой объект (объект с подключённой базой данных). При запуске проекта функция connect отрабатывает самая первая и в переменной database точно хранится не None, а объект. Но почему-то после того как а я запускаю определённые корутины на asyncio - то внутри них эта переменная равна None. Как правильно сделать общий объект соединения с базой данных?

Deep Sea
23.04.2019
18:23:58
Зачем глобал юзать? При старте синхронно инициализируй все что надо, а потом передавай как объект куда надо

Tishka17
23.04.2019
18:24:35

Код есть закон
23.04.2019
18:25:39
Всем доброго вечера! Мы команда разработчиков смарт-контрактов и DApps.
Выполняем проекты любой сложности, есть портфолио! Интересно - пишите в личку.

Марк
23.04.2019
18:27:41

Rail
23.04.2019
18:27:55

Google

Oleg
23.04.2019
18:29:58

Aragaer
23.04.2019
18:31:25
синхронно это в main()

Super Tractors
23.04.2019
18:31:54
Научите меня тоже или дайте алгоритм

Aragaer
23.04.2019
18:32:03
def main():
db = connect()
my_async_task = teh_task(db)
loop.run_forever()

Super Tractors
23.04.2019
18:33:21

Denis
23.04.2019
18:33:50

Super Tractors
23.04.2019
18:34:02

Denis
23.04.2019
18:34:13

Super Tractors
23.04.2019
18:34:56
Чему?
С чего начать, что учить что делать..

melancholiac
23.04.2019
18:35:31
Есть версия на питоне

Oleg
23.04.2019
18:36:22

Super Tractors
23.04.2019
18:37:33

Aragaer
23.04.2019
18:39:02

melancholiac
23.04.2019
18:39:59

Deep Sea
23.04.2019
18:41:12
https://docs.aiohttp.org/en/stable/web_advanced.html#signals

Tishka17
23.04.2019
18:45:06
Что за догматизм?
Когда-нибудь я осилю и напишу развернутое описание почему это плохо. А пока можешь погуглить


Sasha
23.04.2019
18:47:10
Что за догматизм?
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
Глобальные переменные ухудшают масштабируемость проекта.
Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.


Tishka17
23.04.2019
18:47:40
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
Глобальные переменные ухудшают масштабируемость проекта.
Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Я, пожалуй, схороню.

Google


Denis
23.04.2019
18:47:58
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
Глобальные переменные ухудшают масштабируемость проекта.
Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Логгинг в питоне построен на глобальных переменных. По-твоему, им нельзя пользоваться?


Sasha
23.04.2019
18:48:16
Это разные вещи

Aragaer
23.04.2019
18:48:21
это "локальные" глобальные переменные
если я пользуюсь глобальными переменными, то начинаю их имена с _

Denis
23.04.2019
18:48:39
Не вижу разницы между глобальным коннектом к бд и глобальным логгером

Tishka17
23.04.2019
18:48:56

Aragaer
23.04.2019
18:49:00
тем самым я ограничиваю работу с этой переменной только теми функциями, которые живут в этом же контексте

Denis
23.04.2019
18:49:14

Tishka17
23.04.2019
18:49:27

Aragaer
23.04.2019
18:49:47
_db = None
def connect():
global _db
_db = do_connect()
def query(teh_query):
return _db.query(teh_query)

Sasha
23.04.2019
18:49:51

Aragaer
23.04.2019
18:49:58
при этом слежу, чтобы ни одна собака к моему _db напрямую не обратилась


Марк
23.04.2019
18:50:23
Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
Глобальные переменные ухудшают масштабируемость проекта.
Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
Глобальные переменные создают большие сложности при использовании модульного тестирования.
Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.
Иче? Я про догматизм. Мастабируемость не всегда нужна, читаемость кода не всегда ухудшается и дальше по пунктам.


Aragaer
23.04.2019
18:50:46
мастабируемость это такой гибрид между маштабируемостью и мастурбацией?

Марк
23.04.2019
18:51:26
Кстати, верно подмечено. Даже исправлять не буду

Tishka17
23.04.2019
18:53:49

Марк
23.04.2019
18:54:48

Tishka17
23.04.2019
18:56:10

Марк
23.04.2019
18:56:55

Tishka17
23.04.2019
18:57:22
Вот и поговорили

Google

Марк
23.04.2019
18:59:07
Ага. Просто ты мыслишь догматами, а я нет.

Aragaer
23.04.2019
19:01:24
когда мой код перейдет в состояние "я с кем-то поделился", то либо я решу, что "пора тут от глобальных переменных избавиться", либо не решу, но тогда буду готов к "а вот тебе пуллреквест убрать эти переменные"

Tishka17
23.04.2019
19:02:12

Aragaer
23.04.2019
19:07:42
использование глобальных переменных это "а щас я быстренько нафигачу" и "о, оно заработало, но мне исправлять лень"
В остальном надо привить себе отвращение к глобальным переменным. Это как в фехтовании. Надо привить себе ощущение "мне неуютно, когда чужой клинок направлен в меня и находится ближе 20 см от моего корпуса"

Карлос
23.04.2019
19:10:14
пожалуйста ! помогите запустить софт в песочнице на убунте браузер multilogin
а то софт прписался - и триал слетел
где то закрепился в ситсеме непойму где

Sasha
23.04.2019
19:11:35

Марк
23.04.2019
19:12:27

Aragaer
23.04.2019
19:16:19
а теперь минутка пеп8
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").

Марк
23.04.2019
19:19:14
и? Кто-то импортится from M import *?

Sasha
23.04.2019
19:19:22
«Пеп написан людьми которые мыслят догмами»)

Alex
23.04.2019
19:20:13
а.. так это маркуша

Pavel
23.04.2019
19:20:37