Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 12, 2017 20:08:53

rtv132
Зарегистрирован: 2017-09-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Глобальные переменные в функциях

Здравствуйте. Недавно столкнулся с такой проблемой, как область видимости переменных. Она не позволяет мне решить поставленную задачу(написание программы)Вот такой код:
import random
def func():
global a
global b
global c
global d
a = random.randint(0 , 999)
b = random.randint(0 , 999)
с = random.randint(0 , 1)
d = None
if c == 0:
a + b
d = a + b
elif c == 1:
a - b
d = a - b
return a , b , d
func()
И когда я пытаюсь вывести на экран любую переменную с помощью print, то он выводит ошибку, хотя синтаксис верный. Ошибка NameError:
if c == 0:
NameError: name ‘c’ is not defined
И такое случается со всеми переменными, которые я там объявлял.
В интернете ничего не нашел, объясните, пж, что тут неверно

Отредактировано rtv132 (Сен. 12, 2017 20:10:46)

Офлайн

#2 Сен. 12, 2017 20:54:43

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Глобальные переменные в функциях

поменяйте “с” русскую на английскую



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Сен. 12, 2017 20:59:34)

Офлайн

#3 Сен. 12, 2017 21:12:08

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Глобальные переменные в функциях

скорее всего с в строке с = random.randint(0 , 1) набрана кириллицей или в if. а зачем обьявлять переменные глобальными если они созданы в функции и возвращаются ею

 import random
def func():
    a = random.randint(0 , 999)
    b = random.randint(0 , 999)
    c = random.randint(0 , 1)
    if c == 0:
        d = a + b
    elif c == 1:
        d = a - b
    return a , b ,c, d
print(func())
(354, 552, 0, 906)
а вот пару примеров что делает global
 a = 55 # глобальная переменная
def noglob():
   a = 77
   return(a)
print(a) # глобальная а 
print(noglob()) # а из функции
print(a) # глобальная а 
55
77
55
как видно глобальная а не изменилась, функция вернула локальную а то есть это два разных обьекта с одним именем в разных областях видимости
 a = 55 # глобальная переменная
def noglob():
    global a
    a = 77
    return(a)
print(a) # глобальная а 
print(noglob()) # а из функции
print(a) # глобальная а 
55
77
77
a теперь функция переопределила а которую мы указали как глобальную

Отредактировано marvellik (Сен. 21, 2017 21:35:55)

Офлайн

#4 Сен. 21, 2017 20:31:54

rtv132
Зарегистрирован: 2017-09-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Глобальные переменные в функциях

спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version