Передача глобальных переменных в модули - Python - PullRequest
0 голосов
/ 07 октября 2019

У меня есть код module.py, который импортируется в мой main.py, поэтому я могу использовать его функции, которые определены с def. Импортированный модуль имеет только функции def.

В функциях есть несколько операторов if, которыми я бы хотел автоматически управлять из main.py.

Как, например,

main.py

import module as md


BoolIfState=True

for i in range(10):
    md.runfunction(i)

module.py

def runfuntion(i):
   if BoolIfState:
        print i
   else:
        print i-10

return None

Здесь определение BoolIfState в main.py изменяет поведение runfunction по сравнению с module. Я попытался добавить global BoolIfState внутри функции, но это не изменило поведение.

Очевидно, что реальные коды намного сложнее, но это та же основная идея.

Есть ли способ сделать это?


Редактировать: я избегаю давать переменную в качестве входных данных для функции, потому что тогда она будет загромождена, учитывая все переменные, которые могут понадобитьсябыть добавленным. Мне нужно то же самое, чтобы примерно 5 переменных, и с этим, чистота наличия функций, определенных внутри модуля, теряется.

1 Ответ

2 голосов
/ 07 октября 2019

Вы можете упаковать все глобальные переменные в одноэлементный класс ( пример одноэлементного класса ).

Таким образом, вы можете поддерживать один экземпляр класса с переменными-членами, которые могут быть использованы / доступны по всей вашей кодовой базе.

...