2013-11-26 5 views
0

Я новичок в python, и у меня есть вопрос.Импорт методов, использующих глобальные переменные

Я хочу сохранить все переменные в одном файле, а методы - в другом.

Это то, что я имею в виду:

file1.py:

import calculations 

a = 3 
b = 2 
c = subtraction() 
print c 

calculations.py:

def subtraction(): 
    answer = a-b 
    return answer 

Методы в calculations.py должны быть использованы в file1.py, и они должны использовать «глобальные» переменные, указанные в file1.py.

Где моя логика не работает?

ответ

3

Это не то, как работают глобалы в Python. Глобал ограничены модулю они определены в

Вы должны передать в своем переменных в качестве аргументов к subtraction() вместо:.

def subtraction(a, b): 
    return a - b 

и

c = subtraction(a, b) 

Обратите внимание, что вам импортировал модуль , поэтому вам нужно обратиться к функции как к атрибуту этого модуля:

c = calculations.subtraction(a, b) 

С другой стороны, импорт только функцию в вашем модуле пространства имен:.

from calculations import subtraction 
+0

Должен ли я использовать с = вычитания (а, б) --- четкости вычитания (а, б): ответа = а-б обратного ответ ? – tore

+0

@tore: Да, это было бы намного лучше. –

+0

Ну тогда. Я думаю, это то, что я должен сделать :) Спасибо! – tore

3

Когда функция определена, компилятор присваивает свой «глобальный» область, чтобы быть, что из модуля он был определен в данной области видимости не меняется, даже если ссылка на функцию существует в другом модуле, так как сама функция не изменяется.

Смежные вопросы