Python простой?
От: Разраб  
Дата: 07.09.23 07:53
Оценка: :)
Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?
def connect_bd():
    global con
    ...        

def get_from_bd():
    connect_bd()

    with con:
        ...
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: Python простой?
От: pagid_ Россия  
Дата: 07.09.23 08:13
Оценка: 1 (1) +2
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?

Это не о простоте/сложности, а а хаотичности/бессистемности синтаксиса, присущей очень многим, практическим наверно всем, динамическим языкам.
Re: Python простой?
От: CreatorCray  
Дата: 07.09.23 08:21
Оценка: 3 (1) +4 -1 :)
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?

Мда.
На помоечку!
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Python простой?
От: Privalov  
Дата: 07.09.23 08:50
Оценка: +2
Здравствуйте, CreatorCray, Вы писали:

CC>На помоечку!


В печку же!
Автор: Sheridan
Дата: 26.02.08
Re: Python простой?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.09.23 10:11
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


А то что можно любой объект или даже класс доработать напильником на ходу — даже поменять его тип — это тебя не смущает?

Да, вот такая там обстановка и это принципиально.
The God is real, unless declared integer.
Re: Python простой?
От: Pyromancer  
Дата: 07.09.23 10:24
Оценка: +2
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


На то что технически возможно, но не нравится, есть мантра из С++ — "просто не делайте это"
Re: Python простой?
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.09.23 11:06
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


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

Если взять за правило, что абы где переменными не раскидываетесь, то это хороший бенефит — ищете по global и смотрите, где что захватываете с целью модификации.

На самом деле слабоватая фича, т.к. вместо изменения переменной можно изменить свойство или вызвать мутабельный метод. Но в целом на этой штуке можно построить более-менее внятный подход к разработке в простых приложениях
Отредактировано 07.09.2023 11:09 Pauel . Предыдущая версия .
Re: Python простой?
От: Буравчик Россия  
Дата: 07.09.23 12:34
Оценка: +1
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?

Р>
Р>def connect_bd():
Р>    global con
Р>    ...        

Р>def get_from_bd():
Р>    connect_bd()

Р>    with con:
Р>        ...
Р>


1. В таком виде не работает. Будет ошибка NameError
2. Не надо писать такой код. Да и вообще, не надо использовать global
Best regards, Буравчик
Re[3]: Python простой?
От: CreatorCray  
Дата: 07.09.23 20:06
Оценка: +1
Здравствуйте, Privalov, Вы писали:

CC>>На помоечку!

P>В печку же!
Автор: Sheridan
Дата: 26.02.08

Ещё вариант "фтопку!"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Да фигня
От: Wolverrum Ниоткуда  
Дата: 07.09.23 22:06
Оценка: +1 :)))
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?

Это еще фигня

Лично я над примерно таким довольно долго медитировал (пока не домедитировал до знания, что это типа здесь вполне нормальное поведение)
class A:
    def __init__(self, arg_list=[]):
        self._args = arg_list

    def append(self, item):
        self._args.append(item)

    def iterate(self):
        for item in self._args:
            print(f"{item} ")

def run():
    a = A()
    b = A()
    b.append(1)
    b.append(2)
    a.append(3)
    b.iterate()

run()


"Счастливой отладки!" как говорится
Re[2]: Да фигня
От: Разраб  
Дата: 08.09.23 02:50
Оценка:
Здравствуйте, Wolverrum, Вы писали:

W>Лично я над примерно таким довольно долго медитировал (пока не домедитировал до знания, что это типа здесь вполне нормальное поведение)

W>
W>class A:
W>    def __init__(self, arg_list=[]):
W>        self._args = arg_list
W>


W>"Счастливой отладки!" как говорится


def run():
    a = A([])
    b = A([])

Но почему?
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Да фигня
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 08.09.23 05:06
Оценка: 1 (1) +1 :)
Здравствуйте, Wolverrum, Вы писали:

W>class A:

W> def __init__(self, arg_list=[]):
W> self._args = arg_list

Первый встречный статический анализатор объяснит тебе, в чём ты неправ. А анализаторов этих штуки 3-4 доступных щелчком пальца на pip install. Если ты их не применяешь — чистый ССЗБ. Сейчас таки не 2000-й год, чтобы это всё только глазами ловить ;\

Я как-то похожее написал (если точно, там было foo = [] в объявлении класса). Потом что-то стукнуло и исправил, просто по ходу прочей возни. Но между написанием и правкой отфоркнули релизную ветку.
Саппорту пришлось побегать по кастомерам.
Анализаторов тогда не было, или, скорее, я их не знал (конец 2000х).

W>"Счастливой отладки!" как говорится


Нее, настоящие проблемы сильно глубже;\
The God is real, unless declared integer.
Re: Python простой?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 08.09.23 05:22
Оценка: +1
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


Вдогонку:

Р>def connect_bd():

Р> global con
Р> ...

Ну а возьмём C:

$ cat t1.c
#include <stdio.h>
void aaa();
void bbb();
int main() {
  extern int moo;
  moo = 0x12345678;
  printf("%x\n", moo);
  aaa();
  bbb();
}
$ cat t2.c
int moo = 999;
netch@lessie:/tmp>>
$ cat t3.c
void aaa() {
  extern short moo;
  moo = 123;
}
$ cat t4.c
#include <stdio.h>
void bbb() {
   extern int moo;
   printf("%x\n", moo);
}
$ gcc t1.c t2.c t3.c t4.c
$ ./a.out 
12345678
1234007b


Ну и в чём разница?
В Питоне хотя бы нарушить типы нельзя;\
А в C спокойно где-то на любой глубине ссылайся через extern куда угодно...
The God is real, unless declared integer.
Re[2]: Python простой?
От: night beast СССР  
Дата: 08.09.23 06:22
Оценка:
Здравствуйте, netch80, Вы писали:

Р>>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?

N>Вдогонку:

Р>>def connect_bd():

Р>> global con
Р>> ...

N>Ну а возьмём C:


я так понял, основная претензия была в том что читать без global можно, а писать нельзя )
Re: Python простой?
От: DiPaolo Россия  
Дата: 08.09.23 06:35
Оценка:
Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?
Норм. Даже полезно. Собственно, официальная документация то же самое объясняет:

(https://docs.python.org/3/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python)

Though a bit surprising at first, a moment’s consideration explains this. On one hand, requiring global for assigned variables provides a bar against unintended side-effects. On the other hand, if global was required for all global references, you’d be using global all the time. You’d have to declare as global every reference to a built-in function or to a component of an imported module. This clutter would defeat the usefulness of the global declaration for identifying side-effects.

Патриот здравого смысла
Re[3]: Python простой?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 08.09.23 07:17
Оценка:
Здравствуйте, night beast, Вы писали:

NB>я так понял, основная претензия была в том что читать без global можно, а писать нельзя )


Я не могу найти никакого способа понять фразу

Р>>>нечто глобальное объявляется внутри функции


описанным тобой способом. Ибо "объявляется" это не "используется".

Проблема, да, есть (для сравнения см. команду nonlocal — почему она нужна, а global — нет?)
Но она понятна, если посмотреть на eval() где определяются global и local пространства, а не цепочка всевозможных между ними.
The God is real, unless declared integer.
Re[4]: Python простой?
От: night beast СССР  
Дата: 08.09.23 07:25
Оценка:
Здравствуйте, netch80, Вы писали:

NB>>я так понял, основная претензия была в том что читать без global можно, а писать нельзя )


N>Я не могу найти никакого способа понять фразу

Р>>>>нечто глобальное объявляется внутри функции
N>описанным тобой способом. Ибо "объявляется" это не "используется".

мое предположение было сделано исходя из представленного кода и вероятного небольшого опыта работы ТС с питоном
Re[3]: Да фигня
От: Wolverrum Ниоткуда  
Дата: 08.09.23 15:32
Оценка:
Здравствуйте, netch80, Вы писали:

N>Первый встречный статический анализатор объяснит тебе, в чём ты неправ.

Согласен, но заметил, что там что-то подчеркивается (речь идет о pycharm) лишь вчера, когда пример готовил

N>Нее, настоящие проблемы сильно глубже;\

Вполне согласен, но пока экспы мало, и код слишком прикладной, чтобы замечать. бездну смотрящую в меню
Re[4]: Python простой?
От: Privalov  
Дата: 09.09.23 10:54
Оценка:
Здравствуйте, CreatorCray, Вы писали:

Это общий вариант. А "в печку" — сугубо для Питона.
Есть еще один специализированный. В пруд
Автор: Sheridan
Дата: 16.01.12
и закопать
Автор: Sheridan
Дата: 16.01.12
. Это про жабу (Java по-русски).
Re[5]: Python простой?
От: rudzuk  
Дата: 09.09.23 14:07
Оценка: +1
Здравствуйте, Privalov, Вы писали:

P> Есть еще один специализированный. В пруд
Автор: Sheridan
Дата: 16.01.12
и закопать
Автор: Sheridan
Дата: 16.01.12
. Это про жабу (Java по-русски).


avalon/3.0.2
Re[3]: Да фигня
От: serjjj Россия  
Дата: 06.04.24 16:37
Оценка: 3 (1)
Здравствуйте, Разраб, Вы писали:

Р>Но почему?


Этот пример немного переусложненный. Вот попроще с пояснением: https://www.youtube.com/watch?v=8GpI0PAGniA&amp;t=1341s (время 22:21)
Отредактировано 06.04.2024 16:39 serjjj . Предыдущая версия .
Re[2]: Python простой?
От: SkyDance Земля  
Дата: 06.04.24 16:52
Оценка:
_>Это не о простоте/сложности, а а хаотичности/бессистемности синтаксиса

Да.

_> присущей очень многим, практическим наверно всем, динамическим языкам.


Нет, это именно питон такой кривой.
Re: Python простой?
От: Константин Б. Россия  
Дата: 11.04.24 15:08
Оценка: +1 -1
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


Простите, а причем тут питон?
Я такое тебе на любом языке программирования могу написать.
Включая статически типизированные
Автор: pagid_
Дата: 07.09.23
.
И даже С++
Автор: CreatorCray
Дата: 07.09.23
.

void FooBar::connect_bd() {
    con = ...      
}  

void FooBar::get_from_bd() {
    this->connect_bd();

    con->do_smth(...);
    ...
}


Давайте, расскажите мне что это другое
Re[2]: Python простой?
От: rFLY  
Дата: 11.04.24 16:57
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>Я такое тебе на любом языке программирования могу написать.

В C# не сможешь.
Re[2]: Python простой?
От: yenik  
Дата: 12.04.24 06:43
Оценка:
Но ты же не можешь объявить con внутри метода.
Re[2]: Python простой?
От: CreatorCray  
Дата: 12.04.24 07:21
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>
КБ>void FooBar::connect_bd() {
КБ>    con = ...      
КБ>}  

КБ>void FooBar::get_from_bd() {
    this->>connect_bd();

    con->>do_smth(...);
КБ>    ...
КБ>}
КБ>


А где тут собственно объявление?
Твой "код" банально не скомпилируется, потому как con не объявлен.
Ну и нахрена там this-> ?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Python простой?
От: Константин Б. Россия  
Дата: 12.04.24 07:38
Оценка: :)
Здравствуйте, rFLY, Вы писали:

FLY>Здравствуйте, Константин Б., Вы писали:


КБ>>Я такое тебе на любом языке программирования могу написать.

FLY>В C# не сможешь.

Легко
class Foo {
    public static Connection con;
...
    void connect_bd() {
        con = ...
    }

    void get_from_bd() {
       connect_bd();
       using (con) {
           ....
       }
    }
}
Re[3]: Python простой?
От: Константин Б. Россия  
Дата: 12.04.24 07:38
Оценка:
Здравствуйте, yenik, Вы писали:

Y>Но ты же не можешь объявить con внутри метода.


На питоне то же не можешь.
Re[3]: Python простой?
От: Константин Б. Россия  
Дата: 12.04.24 07:40
Оценка:
Здравствуйте, CreatorCray, Вы писали:


CC>А где тут собственно объявление?

CC>Твой "код" банально не скомпилируется, потому как con не объявлен.

А почему тебя не смутило что в коде топикстартера тоже нет объявления и "код" банально ошибку выдаст?
Re[4]: Python простой?
От: rFLY  
Дата: 12.04.24 08:54
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>Легко

Это читерство, надо использовать переменную.
Re[5]: Python простой?
От: Константин Б. Россия  
Дата: 12.04.24 10:15
Оценка:
Здравствуйте, rFLY, Вы писали:

FLY>Здравствуйте, Константин Б., Вы писали:


КБ>>Легко

FLY>Это читерство, надо использовать переменную.

Почему? В примере на питоне использовался аттрибут модуля. Статическое поле класса вполне равноценный аналог.
Re[4]: Python простой?
От: CreatorCray  
Дата: 12.04.24 20:59
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>А почему тебя не смутило что в коде топикстартера тоже нет объявления и "код" банально ошибку выдаст?

Я на питоне не пишу, так что поверил ему на слово.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: О как
От: Sheridan Россия  
Дата: 17.04.24 17:11
Оценка:
Здравствуйте, rudzuk, Вы писали:
R>Здравствуйте, Privalov, Вы писали:

А тут, оказывается уже почти секта имени меня.
Не продолжайте.
Matrix has you...
Re[7]: О как
От: rudzuk  
Дата: 17.04.24 17:40
Оценка:
Здравствуйте, Sheridan, Вы писали:

S> А тут, оказывается уже почти секта имени меня.

S> Не продолжайте.

Как седьмой монитор купишь мы тя канонизируем!
avalon/3.0.2
Re[8]: О как
От: Sheridan Россия  
Дата: 24.04.24 05:06
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Как седьмой монитор купишь мы тя канонизируем!

По дому уже больше.
4шт — основное рабочее место
3шт — комп в мастерской
1шт, ещё 14", но уже жк — шлюз, 1шт — видеонаблюдение.
Matrix has you...
Re[9]: О как
От: rudzuk  
Дата: 24.04.24 06:14
Оценка:
Здравствуйте, Sheridan, Вы писали:

S> R>Как седьмой монитор купишь мы тя канонизируем!


S> 4шт — основное рабочее место


Старайся лучше!
avalon/3.0.2
Re[10]: О как
От: Sheridan Россия  
Дата: 24.04.24 10:19
Оценка:
Здравствуйте, rudzuk, Вы писали:

S>> R>Как седьмой монитор купишь мы тя канонизируем!

S>> 4шт — основное рабочее место
R>Старайся лучше!

А мне тут больше и не надо.
Мой рейтинг такой:
3шт — минимальный сетап (в ряд)
4шт — оптимальный (3 в ряд + 1 сверху)
6шт — избыточный (по 3 в два ряда)
9шт — максимальный (по 3 в три ряда)

Дальше 9шт уже видеостены, которые по большей части не для работы, а для мониторинга в основном используются. Ну или для постоянного отображения какой-то динамической схемы типа электросетей что по факту тоже мониторинг как бы...
Меньше 3шт — уже как-то не воспринимаю за рабочее место.
Matrix has you...
Re[5]: Python простой?
От: · Великобритания  
Дата: 24.04.24 10:34
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Это общий вариант. А "в печку" — сугубо для Питона.

P>Есть еще один специализированный. В пруд
Автор: Sheridan
Дата: 16.01.12
и закопать
Автор: Sheridan
Дата: 16.01.12
. Это про жабу (Java по-русски).

качественный интерфейс на Java+Web будет под нагрузкой быстрее и надёжнее творчества с Vegda и прочими Kalpa

ичсх так и получилось. А кто такие Vegda и Kalpa — уже никто и не помнит.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: О как
От: pagid_ Россия  
Дата: 24.04.24 11:06
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Дальше 9шт уже видеостены, которые по большей части не для работы, а для мониторинга в основном используются.

Может у меня с фантазией туго, но как использовать 9 для работы тоже не представляю.

S>Меньше 3шт — уже как-то не воспринимаю за рабочее место.

Таки работа в мониторинге заключается.
Re[12]: О как
От: Sheridan Россия  
Дата: 05.05.24 22:20
Оценка:
Здравствуйте, pagid_, Вы писали:

S>>Дальше 9шт уже видеостены, которые по большей части не для работы, а для мониторинга в основном используются.

_>Может у меня с фантазией туго, но как использовать 9 для работы тоже не представляю.
Я бы вот так раскидал к примеру:
какойто мониторинг - ютуб с фоновым "бу-бу-бу-бу" - какойто мониторинг
        |                       |                                | 
корп. чятик с коллегами - текущий созвон     -  просто чятик, например телега 
        |                       |                                |
Консолька        -            vscode          -              документация

Нижний ряд — перед глазами, рабочий. Всё что выше — просто для того чтобы не альттабицца а просто взгляд перенести. Опять же полезно для сценариев типа "запустил и тут же вижу нагрузку, логи, процессы сразу на клиенте и сервере"


S>>Меньше 3шт — уже как-то не воспринимаю за рабочее место.

_>Таки работа в мониторинге заключается.
Давно уже там всё описал
Matrix has you...
Отредактировано 05.05.2024 22:36 Sheridan . Предыдущая версия .
Re[6]: Python простой?
От: Sheridan Россия  
Дата: 05.05.24 22:33
Оценка:
Здравствуйте, ·, Вы писали:

P>>Это общий вариант. А "в печку" — сугубо для Питона.

P>>Есть еще один специализированный. В пруд
Автор: Sheridan
Дата: 16.01.12
и закопать
Автор: Sheridan
Дата: 16.01.12
. Это про жабу (Java по-русски).

·>

качественный интерфейс на Java+Web будет под нагрузкой быстрее и надёжнее творчества с Vegda и прочими Kalpa

·>ичсх так и получилось. А кто такие Vegda и Kalpa — уже никто и не помнит.
Считаю, что мой товарищ несколько развивал не подумал и свой проект в одно лицо, при этом закрыв исходники. Ни документации, ни статей, ни-че-го. Какие-то проекты он на этом писал, даже в заграницу куда-то, но в сообщество выводить не стал.
Я пытался до него донести, что надо как-то рассказывать о своей придумке. Да и тут и тут как то рассказывать пытался, но товарищу было как-то всё равно
Вроде как оно там до сих пор живое, но используется просто как личный фреймворк.
И проблема именно в этом, а не в том что жабавэб — круче.
Кто знает что бы получилось, если бы товарищ выложил свой код с примерами и регулярно выдавал бы статьи по теме.
Matrix has you...
Re: Python простой?
От: пффф  
Дата: 05.05.24 23:14
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?


Я конечно не большой спец по питону, но тут вроде глобальная переменная не объявляется внутри функции, а функции говорится использовать эту глобальную переменную, иначе функция использовала бы автоматическую локальную. И вроде это нужно только если хочется модифицировать глобальную переменную, а не просто использовать её значение (но тут я совсем могу ошибаться). В целом, вроде, всё вполне логично
Re[7]: Python простой?
От: CreatorCray  
Дата: 05.05.24 23:41
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Считаю, что мой товарищ несколько развивал не подумал и свой проект в одно лицо, при этом закрыв исходники.

"Godzilla had a stroke trying to read this" (C)

S>Я пытался до него донести, что надо как-то рассказывать о своей придумке.

А зачем ему этот дополнительный геморрой?

S>Вроде как оно там до сих пор живое, но используется просто как личный фреймворк.

И в чём проблема?

S>Кто знает что бы получилось, если бы товарищ выложил свой код с примерами и регулярно выдавал бы статьи по теме.

Он бы тратил на это дофига личного времени.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.