Импорт переменных из другого файла в Python
Я объявил несколько переменных и инициализировал их с некоторыми значениями в variables.py :
flag = 0 j = 1
Я хочу использовать эти значения в другом файле main_file.py :
import variables if(flag == 0) : j = j+1
Однако я получаю следующую ошибку,
NameError: name 'flag' is not defined
Как я могу решить эту проблему?
Поделиться Источник 16 августа 2017 в 09:57
3 ответа
Все, что вы сделали, правильно, за исключением использования переменных.
В вашем файле main_file.py:
if(variables.flag == 0) : variables.j = variables.j + 1
(Или)
Используйте следующий заголовок:
from variables import *
from variables import flag, j
Замените все ссылки флага и j (или любую другую переменную, которую вы хотите использовать из этого файла) на префикс ‘переменные.’
Поскольку это просто копия переменной, значения в variables.py не будут затронуты, если вы измените их в main_file.py
Поделиться 16 августа 2017 в 09:59
Вы можете использовать
import variables
а затем получить доступ к гильзам вот так:
variables.flag variables.j
или вы можете использовать:
from variables import flag, j
а затем получить доступ к гильзам только их именем.
Important:
Обратите внимание, что во втором случае вы будете работать с копией переменных, и изменение их в одном модуле не повлияет на переменные в другом модуле!
Поделиться 16 августа 2017 в 10:01
Вам нужно импортировать переменные из файла. Вы можете импортировать все из них так:
from variables import * if(flag == 0) : j = j+1
Или ссылаться на переменную из импортированного модуля, как здесь variables.flag
import variables if(variables.flag == 0) : j = j+1
Или импортировать их по одному, как здесь
from variables import flag, j if(flag == 0) : j = j+1
Лучший способ — использовать variables.flag , сохраняя пространство имен variables , потому что когда ваш код увеличивается, вы всегда можете знать, что переменная флага поступает из переменных модуля. Это также позволит вам использовать тот же флаг имен переменных в других модулях, например, module2.flag
Нужно импортировать переменную firstname из функции другого файла py
У меня есть несколько файлов типа python. Но в этом вопросе используются 2 файла: http://main.py/ и http://req.py/ . В файле http://req.py/ есть функция get_data, а в ней есть переменная(string) firstname. Как можно в http://main.py/ импортировать переменную firstname из функции файла http://req.py/ ?)
Понимаю, что замудрил всё, однако надеюсь на ваше понимание и ответ!♥
Голосование за лучший ответ
from req import firstname
Game-Play PlayerУченик (114) 1 год назад
у меня from req import get_data, firstname
вылазит ошибка
Vitness Просветленный (35133) Game-Play Player, А, переменная внутри функции? Тогда никак, она существует только внутри этой функции
Похожие вопросы
Как обратиться к переменной из другого модуля в PYTHON 3
У меня есть два файла: main.py и sub.py Мне надо завести в main переменную, которую я смогу изменять в sub. Проблема в том, что sub импортируется в main и при добавлении строчки from main import charts (где charts — нужная мне константа) получается ошибка, как я понимаю, связанная с зацикленным импортом. Я видел похожий вопрос тут Импорт функций из другого файла pytnon, но там всего лишь один ответ, который мне кажется неправильным. Хотелось бы узнать, существуют ли какие-то еще варианты выхода из данной ситуации UPD. main.py
from sub.py import MyClass charts = 10 if __name__ == "__main__": my_example = MyClass() my_example.func()
sub.py
class MyClass: def func(self): // тут надо увеличить charts из main и вывести его
Отслеживать
4,507 2 2 золотых знака 9 9 серебряных знаков 28 28 бронзовых знаков
задан 23 апр 2020 в 22:59
Mark Tiukov Mark Tiukov
140 1 1 золотой знак 1 1 серебряный знак 13 13 бронзовых знаков
приведите пожалуйста минимальные примеры main.py и sub.py
23 апр 2020 в 23:09
Избавиться от зацикленного импорта, очевидно. Наличие зацикленного импорта с почти стопроцентной вероятностью означает, что вы выбрали неправильную архитектуру
23 апр 2020 в 23:13
@S.Nick добавил
23 апр 2020 в 23:24
@MarkTiukov во-первых, показанный вами код синтаксически некорректен, а во-вторых, в реальных проектах писать подобным образом нужно примерно никогда. Непонятно, зачем это нужно
23 апр 2020 в 23:25
@andreymal то есть Вы хотите сказать, что в питоне так совсем не принято? В других языках (c++ и java) я постоянно обращался к разных константам и прочим вещах в подобных ситуациях. Это удобно и эффективно. Хотелось бы узнать, как такое делать в Python3
Как сделать вызов функции из другого файла в python?
Чтобы сделать вызов функции из другого файла в python, ее необходимо сначала импортировать. Вы можете импортировать как весь файл(модуль), так и отдельно функции из него. Для импорта, каталог, в котором лежит файл, должен быть пакетом(package), то есть содержать в себе файл init.py .
Импорт модуля. В таком случае функции из модуля вызываются через точку:
from my_package import my_module # где my_package - пакет # my_module - искомый файл def main(): x = my_module.function() .
Импорт конкретной функции из модуля:
from my_package.my_module import function def main(): x = function() .