Найти - Пользователи
Полная версия: глобальная и местная переменная
Начало » Python для новичков » глобальная и местная переменная
1
Voroshek
import pygame, time
from pygame import *
pygame.init()

hod = 'n'
a = 0

def menu():
if a == 0:
menu_fon = image.load('img/menu_fon.png').convert_alpha()
menu_fon.blit(okno)
a = 1
return a

okno = display.set_mode((800, 600))
while hod != 'c':
for event in pygame.event.get():
if event.type == QUIT:
hod = 'c'
if hod == 'n':
menu()
display.flip()
time.wait(41)

if a == 0:
UnboundLocalError: local variable 'a' referenced before assignment
Как так? Ведь интерпретёр должен искать (и найти!:mad:) значение “а” в глобальной области! ЧЯДНТ?
Soteric
def menu():
global a
if a == 0:
Тогда будет искать и найдет.
Voroshek
что-то не то… Вот здесь “а” задаётся и вызывается точно также
# -*- coding: utf-8 -*-
import sys
a = 0
b = 1
def c():
if a == 0:
d = b + 1
print(d)

while 1:
c()
sys.exit()
но возвращает, как и ожидалось, 2. В чём разница? Да и вообще global, если не ошибаюсь, помещает местную переменную в глобальную область видимости, нет?
o7412369815963
Если в методе есть присвоение переменной “a = 1”, то “a” - считается локальное переменной, а в момент “if a == 0” она ещё не создана.
Во втором случае переменная “а” используется только для чтения, поэтому питон понял, что она глобальная.
Если нужно изменять глобальную переменную то нужно указать, что она глобальная: global a
Voroshek
Спасибо, понятно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB