Мне нужно импортировать переменную из функции. Как это сделать? - PullRequest
0 голосов
/ 24 января 2020

Я хочу импортировать переменную из одной функции в другую, есть ли способ, которым я могу это реализовать. Я пытаюсь импортировать переменную number_of_pages из функции 2 в функцию 1, чтобы я мог l oop количество страниц через URL ниже. Ниже приведены две функции:

функция 1

def forge_url(self, year):
    print('Year:', year)
    for page in range(1, number_of_pages, 1):
        print('Page:', page)
        url = 'https://www.example.com/annonce/page?context=add_hit_meta%3Dnumeroparution%2540numeroparution%26add_hit_meta%3Ddatepublication%2540datepublication%26add_hit_meta%3Dnojo%2540nojo%26add_hit_meta%3Dnom%2540nom%26add_hit_meta%3Dprenom%2540prenom%26add_hit_meta%3Dtribunal%2540tribunal%26add_hit_meta%3Drm%2540rm%26add_hit_meta%3Drcs%2540rcs%26add_hit_meta%3Dnumeroannonce%2540numeroannonce%26add_hit_meta%3Dnumerodepartement%2540numerodepartement%26add_hit_meta%3Ddenomination%2540denomination%26add_hit_meta%3Dxmlbody%2540xmlbody%26s%3Ddatepublication%26b%3D0%26q%3D%2528proc%25C3%25A9dure%2Bcollective%2529%2B%2528%2528datepublication%253E%253D{}%2529%2B%2BAND%2B%2528datepublication%253C%253D{}%2529%2B%2529%2Bnumerodepartement%253A%252875%2529%26sa%3D1%26n%3DslBodaccDiffusion%26target%3DstBodaccDiffusion%26hf%3D10%26add_category_group%3Dpublication_cat%2540Top%252Fpublication_cat%253A1%26add_category_group%3Dcategorieannonce_cat%2540Top%252Fcategorieannonce_cat%253A1%26add_category_group%3Dtypeannonce_cat%2540Top%252Ftypeannonce_cat%253A1%26lang%3Dfr&page={}'.format(year, year+1, page)
        yield url

функция 2

def get_pages(self, doc, url):
    listings_extract = doc.xpath("//*[@id='resultats']/h3/text()")
    listings = ''.join(listings_extract)
    listings = int(re.search(r'\d+', listings).group())
    number_of_pages = round(listings/10)
    return number_of_pages

1 Ответ

1 голос
/ 24 января 2020

В вашем случае вам не нужно использовать переменную из функции 2 - эта переменная может быть возвращена из функции.

number_of_pages = self.get_pages(doc, url)

Итак, вы можете написать что-то вроде :

def forge_url(self, year):
    number_of_pages = self.get_pages(doc, url)
    print('Year:', year)
    for page in range(number_of_pages):
        print('Page:', page)
        url = 'this very big url of yours'.format(year, year+1, page)
        yield url

Обратите внимание, что из вашего кода неясно, откуда должны поступать параметры doc и url, поэтому я просто добавил их, как если бы они были определены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...