Я пытаюсь написать программный линкор. У меня две игровые матрицы: одна для игрока, одна для компьютера. Они определены за пределами main
, потому что я хочу, чтобы они были глобальными переменными, потому что некоторые функции манипулируют/читают их. Я использую Python 2.6.1.Глобальные переменные, объявленные в функции, по-прежнему считаются локальными
#create player game board (10x10 matrix filled with zeros)
playerBoard = [[0]*10 for i in range(10)]
#create computer game board (10x10 matrix filled with zeros)
computerBoard = [[0]*10 for i in range(10)]
Затем я определяю основную функцию.
#define main function
def main():
global playerBoard
global computerBoard
#keepGoing is true
keepGoing = True
#while keepGoing is true
while keepGoing:
#call main menu function. Set to response.
response = mainMenu()
#if response is 1
if response == "1":
#begin new game
#call clearBoards function
clearBoards()
#call resetCounters function
resetCounters()
#call placeShips function (player)
playerBoard = placeShips(playerBoard, "player")
#call placeShips function (computer)
computerBoard = placeShips(computerBoard, "computer")
#call guessCycler function
guessCycler()
#if response is 2
if response == "2":
#keepGoing is false
keepGoing = False
Несмотря на мою декларацию global playerboard
и global computerBoard
в main
PyScripter еще говорит, что те являются локальными переменными. Я этого не понимаю. Как я могу убедиться, что они глобальны?
Документы я уже смотрел на:
Using global variables in a function other than the one that created them
Changing global variables within a function
http://www.python-course.eu/global_vs_local_variables.php
Немного не по теме, но вы не должны иметь свой комментарий на каждой строке, что просто объясняет, что делает следующая строка. Это избыточно. –
Являются ли глобальные варны чем-то, что вам абсолютно необходимо? – gregb212
вы можете проверить значения вне функции. Я не использую PyScripter, возможно, это неверно. – jpwagner