2013-03-10 4 views
2

Так у меня есть файл, давайте назовем его main.pyКак получить доступ к переменной из функции в импортируемого файла

В этом, я импортировал внешний файл, который мы будем называть ext.py

Теперь давайте скажем, что это содержимое ext.py:

def how(): 
    tangerine = 1 

И скажем, это содержание main.py:

import ext 
print #Not sure what or how 

Что я хочу знать, так это сделать, чтобы распечатать переменную мандарина через главный файл. Что-то вроде этого: print ext.how(). Tangerine? Если я набираю ext.tangerine, он не работает, так как мандарин определяется только в функции how().

Пожалуйста, помогите, поскольку мне это действительно нужно!

ответ

4

Альтернативой использованию глобальной - возвращает значение мандарин из FUNCTION-:

def how(): 
    tangerine = 1  
    return tangerine 

в main.py-:

import ext 
print ext.how() 
+0

Хау() функция (или в моем конкретном случае функция дата()) намного больше и не имеет только то, что в качестве кода, так если бы я правильно понял ваш код, это создало бы хаос. Или он напечатает только то, что вы вернули? Спасибо! – user2154354

+0

@ user2154354 Он будет печатать только то, что вы вернули, поэтому не беспокойтесь. – 2013-03-11 18:52:17

+0

Это не работает. Что мне нужно сделать, это ввести некоторые файлы, в том числе две даты (даты прибытия и даты вылета). Итак, в одном файле я ввожу все, и в момент ввода дат он переходит в совершенно другой файл, где весь алгоритм предназначен для проверки того, принимаются ли даты. не Если да: мандарин = 1 возвращение мандарин Элиф нет: мандарин = 0 возвращение мандарин А затем в главном файле, я ввод еще немного, и это, как написано: если file2.function() == 1 print «Даты приняты» elif file2.function() == 0 пишите всю информацию в файлы – user2154354

1

Вы, вероятно, следует использовать класс.

def how(): 
    tangerine = 1 

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

Использование классов/объектов не сложно:

class Know(object): 
    def __init__(self, t): 
     self.tangerine = t 
    def how(self): 
     self.tangerine += 1 

iknow = Know(0) 
iknow.how() 

youknow.Know(9) 
youknow.how() 
print youknow.tangerine 
>>> 10 
print iknow.tangerine 
>>> 1 
+0

Мне очень жаль, но я забыл упомянуть, что я не знаю и просто не могу понять классы (Я пробовал). – user2154354

+0

классы - это переменные на стероидах. переменные со своими собственными функциями (= методы). в обычных случаях использования нет ничего сложного. try: '' Я использую classes'.upper() 'в режиме ожидания. –

+0

Нет, серьезно, я действительно не могу понять их с __init__ и «я», «объект» и все эти вещи. Здесь я изучаю python от: http://learnpythonthehardway.org/book/ex40.html – user2154354

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