2010-10-06 4 views
2

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

В main.py У меня есть

def foo(): 
    HTTPHelper.setHost("foo") 
    host = HTTPHelper.host() 

и HTTPHelper.py:

_host = None 
def setHost(host): 
    _host = host 
def host(): 
    return _host 

Но когда я пошагово Foo() хост становится NoneType, даже если я поставил его на линии до. Очень путать ...

ответ

4
def setHost(host): 
    global _host 
    _host = host 
7

ответ Гленна будет исправить вашу непосредственную проблему внутри модуля, но ради того, чтобы дать человеку удочку, а не рыбу: Short Description of the Scoping Rules?

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

Следует также отметить, что если вы рассматриваете такие вещи, как объекты (и то, что вы пишете, похоже, что вы намереваетесь), вы должны писать класс и устанавливать его атрибуты, а не глобальные переменные, которые вы обрабатываете после импорта модуля.

+0

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

+0

Достаточно честный, я имел в виду не обиду или наклонный ответ на мой ответ, просто заметил, почему другой ответ на тот же вопрос. –

+0

Спасибо за советы. Я был осведомлен о том, как это должно быть спроектировано, и теперь это классный класс, я работал над другой частью и просто хотел, чтобы что-то быстро работало и получилось действительно прослушивание, когда что-то простое, как это было не так. Я новичок в python, а не в программировании. Работа в Python, C++, C#, PHP в том же проекте помешает вашему синтаксису :) – dutt

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