Глобальные статические переменные в Python - PullRequest
5 голосов
/ 12 сентября 2010
def Input():
    c = raw_input ('Enter data1,data2: ')
    data = c.split(',')
    return data

Мне нужно использовать список data в других функциях, но я не хочу вводить raw_input каждый раз. Как я могу сделать data как глобальную статическую в c ++ и поместить ее везде, где это необходимо?

Ответы [ 2 ]

13 голосов
/ 12 сентября 2010

Добавьте одну строку к вашей функции:

def Input():
    global data
    c = raw_input ('Enter data1,data2: ')
    data = c.split(',')
    return data

Оператор global data является объявлением, которое делает data глобальной переменной. После вызова Input() вы сможете ссылаться на data в других функциях.

4 голосов
/ 12 сентября 2010

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

class Questionaire(object):
    def __init__(self):
        self.data = ''

    def input(self):
        c = raw_input('Enter data1, data2:')
        self.data = c.split(',')

    def results(self):
        print "You entered", self.data

q = Questionaire()
q.input()
q.results()
...