Python: Как я могу использовать переменную из основного файла в модуле? - PullRequest
7 голосов
/ 16 мая 2011

У меня есть 2 файла main.py и irc.py.
main.py

import irc
var = 1
func()

irc.py

def func():
    print var

Когда я пытаюсь запустить main.pyЯ получаю эту ошибку

NameError: глобальное имя 'var' не определено

Как заставить это работать?

@ Edit
Я думал, что есть лучшее решение, но, к сожалению, единственное, что я нашел, это создать другой файл и импортировать его в оба файла
main.py

import irc
import another
another.var = 1
irc.func()

irc.py

import another
def func():
    print another.var

another.py

var = 0

Ответы [ 4 ]

11 голосов
/ 16 мая 2011

Не.Передайте его. Постарайтесь, чтобы ваш код был максимально изолированным: один модуль не должен полагаться на внутреннюю работу другого.Вместо этого попытайтесь разоблачить как можно меньше.Таким образом, вы защитите себя от необходимости менять мир каждый раз, когда вы хотите, чтобы все было немного иначе.

main.py

import irc
var = 1
func(var)

irc.py

def func(var):
    print var
6 голосов
/ 16 мая 2011

Ну, это мой код, который отлично работает:

func.py:

import __main__
def func():
    print(__main__.var)

main.py:

from func import func

var="It works!"
func()
var="Now it changes!"
func()
2 голосов
/ 16 мая 2011

Два варианта.

from main import var

def func():
    print var

Это скопирует ссылку на оригинальное имя в модуль импорта.

import main

def func():
    print main.var

Это позволит вам использовать переменную из другого модуля и при необходимости изменить ее.

0 голосов
/ 16 мая 2011

Ну, var в функции не объявлен.Вы могли бы передать это в качестве аргумента.main.py

import irc
var = 1
func(var)

irc.py

def func(str):
    print str
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...