Можно ли вызвать переменную из другой функции в другой функции? - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу использовать переменную, такую ​​как модель, которая подготовила определенное предложение для gensim.Например, я использую gensim word2vec для обучения предложения, чтобы найти его векторы в другой функции и сохранить его в переменной с именем «model».

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

Мой код выглядит следующим образом:

def gen(sentence):
    model = gensim.models.word2vec.Word2Vec([sentence],min_count=1, workers=1, size=3)
    ....
    ....
    return ...

def name(sentence):
    for word in sentence:
        print(model.wv[word])
    return

Есть ли способ передать переменную из функции def "gen" с именем "model" в функцию def "name"?Я пытался использовать себя, но это не работает.Я хотел просто вызвать переменную, потому что я не хочу создавать еще одну дополнительную функцию, просто чтобы связать ее.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Почему вы не можете просто вызвать функцию, в другой вашей функции я привел простой пример, не уверенный, что я вас неправильно понимаю

def multiply(c):
    t = add(1, 4)
    c *= t
    return c

def add(a, b):
    t = a + b
    return t

x = multiply(2)
print(x)
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 example.py 
10
0 голосов
/ 20 сентября 2018

Случай, когда функции должны совместно использовать переменные, является классической мотивацией объектно-ориентированного программирования.Вы можете превратить эти функции в члены класса с атрибутом self.model, инициализированным в __init__(self) как self.model = None:

class MyClass(object):

    def __init__(self):
        self.model = None

    def gen(self, sentence):
        self.model = gensim.models.word2vec.Word2Vec([sentence],min_count=1, workers=1, size=3)
        ...

    def name(self, sentence):
        ...

# below is a test
if __name__ == '__main__':
    sentence = 'sadfdsafesafsdf'
    my_obj = MyClass()
    something_returned = my_obj.gen(sentence)
    something_else_returned = my_obj.name(sentence)

Затем вы измените эту переменную, вызвав функцию gen() ииспользуйте его в функции name().

...