Внешняя функция с глобальными переменными - PullRequest
1 голос
/ 28 октября 2019

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

Видимо, единственный способ сделать это - использовать импорт some_function from some_file (верно?). Можно ли все еще использовать глобальные переменные таким образом? То есть переменные, объявленные в основном файле и непосредственно доступные во внешнем файле? Я также стараюсь не передавать их в аргументах, так как это усложняет код. Я думал о некоторой инструкции «include», но я не уверен, что она существует в Python.

Так что код в основном файле будет таким:

from test import test
x=1
test()

и в файлеtest.py это было бы так:

def test():
    global x
    print(x)

Может быть, это просто проблема с правильным редактором ... Кто-нибудь рекомендует для MacOS?

1 Ответ

0 голосов
/ 28 октября 2019

Python import в значительной степени эквивалентен include в других языках, особенно в форме from some_file import *, которая импортирует все пространство имен, включая функции, классы и все глобальные переменные в этом модуле или пакете.

Редактировать: Однако, если вы хотите сделать то, что вы просили в ваших комментариях, это можно сделать с помощью импортированных переменных. Например, рассмотрим 2 файла: main.py и imported.py.

imported.py могут выглядеть следующим образом:

some_global_var = 1
other_var = 2

def add():
    return some_global_var + other_var

Поскольку imported.py имеет функции, которые используют глобальные переменные (вместо этогоаргументов), нет никаких причин, по которым вы не можете изменить эти переменные после импорта. Для этого main.py может выглядеть так:

import imported

print(imported.add()) # 3 - because we didn't change anything yet
imported.some_global_var = 10
imported.other_var = 20
print(imported.add()) # 30 - because we redefined the imported variables that our imported function uses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...