@ru_python

Страница 8822 из 9768
Tishka17
24.04.2019
10:41:48
Глобальные переменные, удобно

Неконтролируемый жизненный цикл - это же так круто

Tynuk
24.04.2019
10:42:29
какой цикл?

?? Eugene
24.04.2019
10:42:32
Зачем тебе такая кривая либа когда ровных полно?

Google
Tishka17
24.04.2019
10:43:00
какой цикл?
Жизненный. Вот ты поменял токен, а вдруг его старое значение кто-то уже юзает

Tishka17
24.04.2019
10:43:20
кто?
Код в либе

Tynuk
24.04.2019
10:43:36
Код в либе
у меня там две функции

и обе юзают

Tishka17
24.04.2019
10:43:52
Ну я и говорю

Глобальные переменные допустимы только в одном случае - если они константы. Если у тебя хоть где-то они меняются после создания, это уже говнокод

Tynuk
24.04.2019
10:44:58
токен можно считать константой

Tishka17
24.04.2019
10:45:04
Нельзя

Tynuk
24.04.2019
10:45:08
че?

он всегда один и тот же

Prunkles
24.04.2019
10:45:50
Глобальные переменные допустимы только в одном случае - если они константы. Если у тебя хоть где-то они меняются после создания, это уже говнокод
Не, ну бывают случаи, когда глобальная переменная может отвечать некоторое глобальная состояние программы, а-ля синглтон, но и такое тоже редко рекомендуется

Google
Tishka17
24.04.2019
10:46:21
Сделай такой код. file.py: from lib import token def debug(): print(token) main.py: ... lib.token="xxx" file.debug()

он всегда один и тот же
Не всегда. Если момент до того как ты в мейне его присвоил, когда он другой

У тебя у токен два значения: дефолтное и то, которое ты туда записал.

Он уже не константа

Выше пример, на котором все сломается

Prunkles
24.04.2019
10:47:46
Но он же может сделать отдельный файл, куда будет записывать токен, типа конфигурационный файл. И вот тебе константа

Alex
24.04.2019
10:47:47
супер, я так же раньше делал =)
я когда это увидел, думал что это кто то такой план себе сделал, а потом как дошло что это рабочий код ваще в осадок выпал...=)

Tishka17
24.04.2019
10:48:19
понять бы что это делает
Ну ожидается, что функция debug будет выводить токен. Но она не будет этого делать, она будет выводить дефолтное значение

Tishka17
24.04.2019
10:49:11
Tynuk
24.04.2019
10:49:30
их полно

Tishka17
24.04.2019
10:49:44
Ну а почему нельзя взять нормальную либу?

Prunkles
24.04.2019
10:49:52
Эм, конфигурационные данные обычно не в коде, а грузятся из внешнего файла
Я где-то видел, что делают подобные конфиги-куски кода

Tynuk
24.04.2019
10:50:04
Tishka17
24.04.2019
10:50:49
Я где-то видел, что делают подобные конфиги-куски кода
Ага. В результате имеем небозопасный код и сильную связность разных модулей программы от одного файла.

потому что я лох
Скажи хоть название этой кривой штуки, запишу, буду всех отговаривать

Tynuk
24.04.2019
10:51:36
ты про мою либу?

Google
Tishka17
24.04.2019
10:51:44
А, ты сам написал либу?

Tynuk
24.04.2019
10:51:45
Я не собираюсь ее заливать

Prunkles
24.04.2019
10:51:47
Tishka17
24.04.2019
10:51:51
Так напиши нормально

Tynuk
24.04.2019
10:52:01
Так напиши нормально
я только начал

Tishka17
24.04.2019
10:52:03
Я думал ты взял готовое говно

А ты его сам делаешь

Tynuk
24.04.2019
10:52:16
Tishka17
24.04.2019
10:52:17
Ну так не юзай глобальные переменные

Tynuk
24.04.2019
10:52:26
Ну так не юзай глобальные переменные
а как мне токен запихнуть

Tishka17
24.04.2019
10:52:39
Сделай блин класс, в который ты будешь его при создании передавать

Tynuk
24.04.2019
10:52:49
Ну так не юзай глобальные переменные
def getUpdates(offset= 0, limit = 100, timeout = 0, allowed_updates = []): #global TOKEN a = {'offset': offset, 'limit': limit, 'timeout': timeout, 'allowed_updates': allowed_updates} b = get(f'https://api.telegram.org/bot{TOKEN}/getUpdates', params = a).json() return b

фу

?? Eugene
24.04.2019
10:53:04
Сделай класс-обертку, который принимает токен аргументом

Tynuk
24.04.2019
10:53:04
ФП

Я хочу попробывать для начала ФП либу запилить

а потом другую сделать с классами

Tishka17
24.04.2019
10:53:43
ФП?

Prunkles
24.04.2019
10:53:57
ФП?
Функицональнео Программирование, наверное

Google
?? Eugene
24.04.2019
10:54:12
Ты хотел сказать "структурное"

Tishka17
24.04.2019
10:54:14
Ну сделай функцию, которая получает токен и возвращает другую функцию получения апдейта с этим токеном

?? Eugene
24.04.2019
10:54:26
Да, процедурное

Tishka17
24.04.2019
10:55:27
ШОООООООО?
Так что за ФП?

Tynuk
24.04.2019
10:55:34
Функицональнео Программирование, наверное

Tishka17
24.04.2019
10:55:52
Функицональнео Программирование, наверное
Ты уверен, что понимаешь что такое функциональное программирование?

Tynuk
24.04.2019
10:55:53
да я лох

а что?

а бля

Stuber
24.04.2019
10:56:52
Как сделать чтобы колонка процент была глобальной в бд mysql для всех юзеров? По дефолту, например, стоит 10 процентов, потом этот процент меняется и при добавлении нового юзера, чтоб не выводился дефолтные 10 процентов, а бралось из глобального?



Prunkles
24.04.2019
10:57:12
percent*

Tishka17
24.04.2019
10:57:55
def get_updater(token): return lambda *a, **k: get_update(*a, **k, token=token)

Tynuk
24.04.2019
10:58:29
та я увидел

Tishka17
24.04.2019
10:58:39
Вот тебе функциональное программирование

Google
Tynuk
24.04.2019
10:58:40
теперь кол-во О увеличелось

Aragaer
24.04.2019
10:58:46
functools.partial(get_update, token=token)

Tishka17
24.04.2019
10:58:51
Можно через partial конечно

Ну вот, да

Stuber
24.04.2019
10:59:20
тоже так подумал

?? Eugene
24.04.2019
10:59:27
Да

Stuber
24.04.2019
10:59:37
просто думал мб есть какой нибудь другой способ, чтоб не делать отдельную таблицу с одним полем

Tishka17
24.04.2019
11:00:21
да я лох
Просто запомни: глобальные переменные - зло и не должны использоваться если есть хоть одно присваивание после ее создания

Страница 8822 из 9768