Здравствуйте, Разраб, Вы писали:
Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?
Это не о простоте/сложности, а а хаотичности/бессистемности синтаксиса, присущей очень многим, практическим наверно всем, динамическим языкам.
Здравствуйте, Разраб, Вы писали:
Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?
global это явный захват глобальной переменной с возможностью изменения, т.к. просто так перезаписать захваченную переменную не выйдет. Вполне себе годная вещь.
Если взять за правило, что абы где переменными не раскидываетесь, то это хороший бенефит — ищете по global и смотрите, где что захватываете с целью модификации.
На самом деле слабоватая фича, т.к. вместо изменения переменной можно изменить свойство или вызвать мутабельный метод. Но в целом на этой штуке можно построить более-менее внятный подход к разработке в простых приложениях
Здравствуйте, Wolverrum, Вы писали:
W>Лично я над примерно таким довольно долго медитировал (пока не домедитировал до знания, что это типа здесь вполне нормальное поведение) W>
Первый встречный статический анализатор объяснит тебе, в чём ты неправ. А анализаторов этих штуки 3-4 доступных щелчком пальца на pip install. Если ты их не применяешь — чистый ССЗБ. Сейчас таки не 2000-й год, чтобы это всё только глазами ловить ;\
Я как-то похожее написал (если точно, там было foo = [] в объявлении класса). Потом что-то стукнуло и исправил, просто по ходу прочей возни. Но между написанием и правкой отфоркнули релизную ветку.
Саппорту пришлось побегать по кастомерам.
Анализаторов тогда не было, или, скорее, я их не знал (конец 2000х).
W>"Счастливой отладки!" как говорится
Здравствуйте, netch80, Вы писали:
Р>>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как? N>Вдогонку:
Р>>def connect_bd(): Р>> global con Р>> ...
N>Ну а возьмём C:
я так понял, основная претензия была в том что читать без global можно, а писать нельзя )
Р>Вот такие штуки когда нечтно глобальное объявляется внутри функции по вашему как?
Норм. Даже полезно. Собственно, официальная документация то же самое объясняет:
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.
Здравствуйте, night beast, Вы писали:
NB>я так понял, основная претензия была в том что читать без global можно, а писать нельзя )
Я не могу найти никакого способа понять фразу
Р>>>нечто глобальное объявляется внутри функции
описанным тобой способом. Ибо "объявляется" это не "используется".
Проблема, да, есть (для сравнения см. команду nonlocal — почему она нужна, а global — нет?)
Но она понятна, если посмотреть на eval() где определяются global и local пространства, а не цепочка всевозможных между ними.
Здравствуйте, netch80, Вы писали:
NB>>я так понял, основная претензия была в том что читать без global можно, а писать нельзя )
N>Я не могу найти никакого способа понять фразу Р>>>>нечто глобальное объявляется внутри функции N>описанным тобой способом. Ибо "объявляется" это не "используется".
мое предположение было сделано исходя из представленного кода и вероятного небольшого опыта работы ТС с питоном
Здравствуйте, netch80, Вы писали:
N>Первый встречный статический анализатор объяснит тебе, в чём ты неправ.
Согласен, но заметил, что там что-то подчеркивается (речь идет о pycharm) лишь вчера, когда пример готовил
N>Нее, настоящие проблемы сильно глубже;\
Вполне согласен, но пока экспы мало, и код слишком прикладной, чтобы замечать. бездну смотрящую в меню