функция становится не повторяемой при использовании внутри нее глобальной переменной - PullRequest
0 голосов
/ 15 января 2020

новичок здесь, я заинтересован в решении проблемы, но также изучаю «как» и «почему» ее

, поэтому у меня есть эта функция:

import random

move = 0

def computer_move():
    global move
    if move == 0:
        while True:
            rand = random.randrange(0, 9)
            if positions[rand].state:
                move = 1
                positions[rand].state = False
                positions[rand].played = 'circle'
                return positions[rand].x,positions[rand].y

до того, как у меня была Переменная 'move', объявленная вне функции, все работало нормально, за исключением случаев, когда функция вызывается, переменная сбрасывается в 0, поэтому мне приходилось объявлять ее снаружи, и, естественно, мне приходилось использовать ее с global. только теперь, когда я вызываю функцию следующим образом:

x, y = computer_move()

я получаю TypeError: cannot unpack non-iterable NoneType object в строке вызова функции

я устал от нескольких идей, но, похоже, ничего не работает. Ценю любую помощь или разъяснение

1 Ответ

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

В Python функция возвращает None, если return не выполняется. Ваша функция может вернуть None, например, если move != 0. В таком случае x, y = computer_move() будет эквивалентно x, y = None, что вызывает TypeError.

...