С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 3

Про общие переменные между def и def и между импортированными .py файлами

13.04.2020, 12:47. Показов 1823. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, ситуация следующая:

Имеется два .py файла: основной и config.py со всеми "настройками"(переменными, которые нужно задавать отдельно каждому пользователю под себя). Одна из этих переменных - булевое значение, используемое основным .py файлом (пусть будет x = True). Ниже попытаюсь описать принцип работы основного файла

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import config
 
def aaaaa():
    if config.x:
        .....
    elif not config.x:
        .....
 
def bbbbb():
    if a = a:
        config.x = True
        def aaaaa()
    elif a!=a:
        config.x = False
        def aaaaa()
 
if __name__ = '__main__':
    bbbbb()
Мне нужно, чтобы функция bbbbb() изменяла переменную x в файле config, вызывала функцию aaaaa(), которая, прочитав уже измененную функцией bbbbb() переменную, делала свою работу. По описанному выше способу сделать это не получается, тк переменная в config файле попросту не изменяется / не указывается.

Так же изначально я пробовал указывать переменную x в основном файле вот так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
x = True
 
def aaaaa():
    if x:
        .....
    elif not x:
        .....
 
def bbbbb():
    if a = a:
        x = True
        def aaaaa()
    elif a!=a:
        x = False
        def aaaaa()
 
if __name__ = '__main__':
    bbbbb()
и тоже ничего не работало. Дебагером в PyCharm я заметил, что создаются две "параллельные" переменные x отдельно для каждой функции.

Как мне решить эту проблему? Заранее спасибо за ответ
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.04.2020, 12:47
Ответы с готовыми решениями:

Python PyGame def draw,def move,def off_screen,def collision
Python pygame За что отвечают эти команды def draw,def move,def off_screen,def collision?

Зачем нужно def main(), если есть def?
для чего нужно использовать def main(), если есть просто def? чем они отличаются?

Async def / def
В чём разница между асинхронными и синхронными функциями языка Python, в чём между ними различия и почему иногда асинхронные и синхронные...

5
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
13.04.2020, 13:18
Цитата Сообщение от ipodarock Посмотреть сообщение
a = a
а это откуда?

Цитата Сообщение от ipodarock Посмотреть сообщение
def aaaaa()
а это что такое?
0
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 3
13.04.2020, 13:32  [ТС]
Ну под a=a и a!=a я подразумевал условные условия, не имеющие отношения к примеру. Пусть тогда будет так

Python
1
2
3
4
if 5 = 5:
      ....
elif 4 = 5:
      ....
А def aaaaa() и def bbbbb() - просто такие названия функций для примера..

Мне казалось я достаточно понятно и схематично описал свой код)

upd1: А, я понял о чем вы, сейчас исправлю

Добавлено через 7 минут
Вот исправленные версии кода. Увы, кнопочка редактирования первого сообщения уже пропала
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import config
 
def aaaaa():
    if config.x:
        .....
    elif not config.x:
        .....
 
def bbbbb():
    if 5 = 5:
        config.x = True
        aaaaa()
    elif 5 = 4:
        config.x = False
        aaaaa()
 
if __name__ = '__main__':
    bbbbb()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
x = True
 
def aaaaa():
    if x:
        .....
    elif not x:
        .....
 
def bbbbb():
    if 5 = 5:
        x = True
        aaaaa()
    elif 5 = 4:
        x = False
        aaaaa()
 
if __name__ = '__main__':
    bbbbb()
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
13.04.2020, 13:38
Лучший ответ Сообщение было отмечено ipodarock как решение

Решение

Второй вариант, ты правильно заметил в дебагере, что создаются "параллельные" переменные. Читай про области видимости.

Первый вариант, работает.

Добавлено через 3 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import config
 
def foo():
    print(f"CONFIG.X = {config.x}")
 
 
def bar():
    if config.x:
        config.x = False
        foo()
 
if __name__ == '__main__':
    foo()  # CONFIG.X = True
    bar()  # CONFIG.X = False
1
0 / 0 / 0
Регистрация: 26.01.2020
Сообщений: 3
13.04.2020, 13:46  [ТС]
А, я понял, спасибо
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
13.04.2020, 13:55
del **************************************** ***
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2020, 13:55
Помогаю со студенческими работами здесь

переопределение .def
Подскажите пож. В начале программы на ассме я определил некоторые вещи, напрмер: .def flags1=r16 .def flags2=r17 но потом внутри...

Не работает def
import time import telebot from telebot import types import random token = '' bot = telebot.TeleBot(token, parse_mode=None) ...

def файл
Случайно добавил в проект def файл. После его удаления выбивает ошибка error LNK1104: не удается открыть файл "week.def"....

Функции def
Не могу понять как сделать так что бы print выводился в отдельной функции def Вот здесь print выводится в While , а мне нужно так что бы...

Проблемы с def
Код: c = 100 z = 128 v = 257 qsc = 0 qsz = 0 qsv = 0 def stack1(a, b):


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru