2015-02-04 2 views
1

У меня возникла проблема с использованием списка, который выполняется в функции, которую я выполняю. Мой код на данный момент выглядит следующим образом:Использование списка, выполненного в функции вне этой функции, python

def get_things(i): 
    html=str(site[i]) 
    browser = webdriver.Chrome() # Optional argument, if not specified will search path. 
    browser.get(html); 
    playerlist=[] 
    teamlist=[] 
    all_players = browser.find_elements_by_xpath("//a[@class='name']") 
    all_teams = browser.find_elements_by_xpath("//td[@class='last']") 
    for a in all_players: 
     playerlist.append(str(a.text)) 
    print playerlist 
    for td in all_teams: 
     teamlist.append(str(td.text)) 
    print teamlist 
    browser.quit() 
    return playerlist, teamlist 

Затем я хочу использовать teamlist и playerlist в другой функции позже в моей программе.

for i in xrange(0,2): 
    get_things(i) 
    print teamlist #This is where Im told teamlist doesn't exist 
    print playerlist #This is where I'm told playerlist doesn't exist 
    print_sheet(teamlist, playerlist) 

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

NameError: name 'teamlist' is not defined 

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

Как я могу сделать эти списки доступными для остальной части программы?

ответ

0

Вы должны назначить возврат к значениям от get_things некоторых переменных

for i in xrange(0,2): 
    playerlist , teamlist = get_things(i) # missing this 
    print teamlist #This is where Im told teamlist doesn't exist 
    print playerlist #This is where I'm told playerlist doesn't exist 
    print_sheet(teamlist, playerlist) 
1

Используйте следующие

(teamlist, playerlist)=get_things(I) 

как возвращение чего-то ваша функция, вы должны справиться с этим.

Пример

def add(a,b): 
    return a+b 
n=add(6,8) 
print n #n is 14 
Смежные вопросы