2013-06-10 4 views
0

Просто быстрый парень и галсы, это о операторах возврата внутри пользовательских функций. Возможно, это просто немного, но здесь:Операторы return в python

В этом примере он возвращает 5, а затем устанавливает числовую переменную в = give_me_five. Итак, теперь я думаю, что все возвращаемые операторы должны принадлежать начальному имени функции.

def give_me_five(): 
    five = 5 
    return five 

# main 
display("Here's a message for you.\n") 

number = give_me_five() 
print("Here's what I got from give_me_five():", number) 

пока что так хорошо? Хорошо держись за свои штаны.

EMPTY = " " 

def new_board(): 
    """Create new game board.""" 
    board = [] 
    for square in range(NUM_SQUARES): 
     board.append(EMPTY) 
    return board 

В коде выше он создает новый список под названием board и заполняет его пробелами - "". Затем он возвращает плату, так что теперь new_board is = board.

Но в следующей пользовательской функции он просто называет возвращаемую карточку?

def display_board(board): 
    """Display game board on screen.""" 
    print("\n\t", board[0], "|", board[1], "|", board[2]) 
    print("\t", "---------") 
    print("\t", board[3], "|", board[4], "|", board[5]) 
    print("\t", "---------") 
    print("\t", board[6], "|", board[7], "|", board[8], "\n") 

Он также сообщает нам, что функции не видны внутри друг друга, так как он извлек плату из new_board?

Извините за этот длинный пост, но любая помощь будет оценена (в конце концов, не получилось так быстро).

Благодаря

+1

Вам не хватает t он часть, где код выполняет 'some_var = new_board(); display_board (some_var); '. – geoffspear

+0

Ahhhhh, спасибо, спасибо, у меня есть это сейчас. Оказывается, я был простым. Извините, все –

+0

Сфера охвата или область охвата - это термины, используемые для описания поведения, которое вы видите. Найдите термины, подобные «Python scoping», чтобы узнать больше. – dansalmo

ответ

1

Я думаю, что некоторые из путаницы возникает из-за недостатка знаний о параметрах. Если вы посмотрите на display_board(board), board внутри круглых скобок является переменной. В пределах display_board(board) он смотрит на содержимое предоставленного board, а не на то, что определено в new_board.

Чтобы понять это, он мог бы так же легко определить display_board как таким образом:

def display_board(variable): 
    """Display game board on screen.""" 
    print("\n\t", variable[0], "|", variable[1], "|", variable[2]) 
    print("\t", "---------") 
    print("\t", variable[3], "|", variable[4], "|", variable[5]) 
    print("\t", "---------") 
    print("\t", variable[6], "|", variable[7], "|", variable[8], "\n") 

До тех пор, как он называет display_board со значением он получает от new_board как так ...

b = new_board() 
display_board(b) 

Не имеет значения, что имя board (или variable) находится в пределах display_board

+0

Я только что видел, что в «основной» функции он делает именно это, как вы только что описали. Приветствия за ответ. Я буду галочкой, когда наступит 15 минут. –

+0

Рад помочь. Нужны ли параметры сейчас? – mklauber

Смежные вопросы