Форум сайта python.su
0
Прошу прощения за нубский вопрос, но чет я даже не понимаю, в какую сторону гуглить…
Ситуация:
Есть обычный импорт модулей в начале файла:
import re import pandas as pd import statistics import matplotlib.pyplot as plt import numpy as np from pymystem3 import Mystem m = Mystem() import fun_raschet
def key_vvod(key_phrase): key_phrase = m.lemmatize(key_phrase) #Библиотека Mystem key_list = [] for word in key_phrase: word = word.lower() word = re.sub('[^\w\d\s]+', ' ', word) #Библиотека re .... и т.д.
key_list = fun_raschet.key_vvod('некий набор слов') key_list
Офлайн
221
вы не правильно понимаете как работает импорт модулей в питоне. Здесь не как в C, здесь код одного модуля не вставляется в место вызова. Вам надо почитать в книге про питон главу “Области видимости”.
А прямой ответ на ваш вопрос неоднозначен несколько. Я бы предложил что бы ваша функция принимала первым аргументом объект с которым работает.
Офлайн
0
JOHN_16, спасибо за ответ, только я все равно не понимаю (я в целом в программировании нуб, в С вообще ничего не знаю). Пытаюсь гуглить по “области видимости”, но ответа не нахожу. Попробую переформулировать вопрос:
Делаю так (первый вариант):
from pymystem3 import Mystem m = Mystem() def lemm(som_text): text = m.lemmatize(som_text) return text text = lemm('произвольная фраза') text
from pymystem3 import Mystem m = Mystem() import f_lemm text = f_lemm.lemm('произвольная фраза') text
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-4-96c5fc3e6cc1> in <module>() 2 m = Mystem() 3 import f_lemm ----> 4 text = f_lemm.lemm('произвольная фраза') 5 text ~\AnacondaProjects\gotovie_moduli\f_lemm.py in lemm(som_text) 6 7 def lemm(som_text): ----> 8 text = m.lemmatize(som_text) 9 return text 10 NameError: name 'm' is not defined
Офлайн
294
Sterhа зачем вы m = Mystem() выносите из функции? в этом есть какой глубокий известный только особопосвященным смысл? почему нельзя сделать так в f_lemm?
Как сделать так, что бы второй вариант работал?
from pymystem3 import Mystem def lemm(som_text): m = Mystem() text = m.lemmatize(som_text) return text
[code python][/code]
Отредактировано PEHDOM (Сен. 4, 2018 16:22:54)
Офлайн
221
def lemm(m, som_text): text = m.lemmatize(som_text) return text
from pymystem3 import Mystem m = Mystem() import f_lemm text = f_lemm.lemm(m, 'произвольная фраза')
Офлайн
0
JOHN_16, спасибо! Тоже думал о таком способе. Но если внутри функции используются несколько библиотек (Mystem, re, pandas as pd, и т.д.), то их так и перечислять по порядку?
def lemm(m, re, pd, som_text): text = m.lemmatize(som_text) return tex
from pymystem3 import Mystem m = Mystem() import f_lemm text = f_lemm.lemm(m, re, pd, 'произвольная фраза')
Офлайн
294
SterhКакие религиозные причины мешают вам провети импорт всех нужных модулей непосредственно в “файле с функциями”? вплоть до того(если вы боитесь что у вас слишком много импортируеться ненужного) чтобы импотрировать библиотеки прямо в функциях?
Собственно более глобальная цель выглядит так:
[code python][/code]
Отредактировано PEHDOM (Сен. 4, 2018 17:48:32)
Офлайн
0
PEHDOM
Какие религиозные причины мешают вам провети импорт всех нужных модулей непосредственно в “файле с функциями”?

Отредактировано Sterh (Сен. 4, 2018 18:03:11)
Офлайн
0
Опять не работает ((
В “файле с функциями” прописал импорт библиотек:
import json import re import pandas as pd import statistics import matplotlib.pyplot as plt import numpy as np from pymystem3 import Mystem m = Mystem()
with open(f_shina, 'r') as f: shina = json.loads(f.read()) f.close
NameError Traceback (most recent call last) <ipython-input-4-639634771e93> in <module>() 1 #Загружаем шину и индексные файлы 2 with open(f_shina, 'r') as f: ----> 3 shina = json.loads(f.read()) 4 f.close 5 with open(f_direct, 'r') as f: NameError: name 'json' is not defined
Офлайн
221
не надо стреляться. Лучше перестаньте быдлокодить и почитайте учебную литературу.
Я как то не очень отношусь к движухе по занижению порога входа в Питон…вот такое имеем в итоге.
Офлайн