Использование счетчика циклов основной программы внутри модуля в качестве переменной

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

основная программа:

for i in range(3):
    import day

модуль:

x = 3 + i
print(x)

ошибка: name 'i' is not defined

Я хочу использовать счетчик циклов в другом модуле, как мне это сделать?

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

John Gordon 07.04.2024 22:23

Если бы i был создан в другом модуле, вы могли бы import anothermodule и затем получить к нему доступ с помощью anothermodule.i, но переход из основного скрипта в модуль был бы довольно сложным.

Michael Butscher 07.04.2024 22:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Кроме того, импорт модуля более одного раза не имеет никакого эффекта, поскольку модули кэшируются. (Есть некоторые предостережения по этому поводу, но они не имеют значения.)

Вместо этого вам следует определить функцию в day, которая принимает параметр , который мы могли бы назвать i, но я собираюсь вызвать его k, чтобы избежать путаницы. Затем в основной программе импортируйте функцию из day и передайте i в качестве аргумента.

Основная программа:

from day import some_function

for i in range(3):
    some_function(i)

day.py:

def some_function(k):
    x = 3 + k
    print(x)

Вывод из основной программы:

3
4
5

«никогда не сможет получить доступ» — после import __main__ он может получить доступ __main__.i нормально.

no comment 07.04.2024 22:59

@nocomment Ха! Я никогда не слышал об этом раньше. Отредактировано, чтобы упомянуть об этом. Тем не менее, __main__ — это только модуль верхнего уровня. Я имел в виду любой модуль импорта в иерархии импорта.

wjandrea 07.04.2024 23:11

Попробуйте этот подход:
Создайте внутри модуля функцию, которая принимает i и которая затем будет вызываться из основной программы.

В main.py:

from day_module import day_func
for i in range(3):
    day_func(i)

В модуле day_module.py:

def day_func(i):
    x = 3 + i
    print(x)

Выход:

3
4
5

Другие вопросы по теме