Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

global и nonlocal

22.11.2020, 14:28. Показов 1761. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А как передать на печать внутрь функции 3 и 7?
Python
1
2
3
4
5
6
7
8
x = 10
z = 20
 
def func(a, b):
    print(x)
    print(z)
 
func(3, 7)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2020, 14:28
Ответы с готовыми решениями:

global или nonlocal
def func(): global x x = 88 print x x = 0 def func(): global x x = 88 print x

Nonlocal do not work
Друзья, помогите плз. В очередной раз молю о помощи. Ломаю 3ю мышку... Кодирую на Пайтоне 3.4. Вот код: def f1(): x = 2 ...

Область видимости nonlocal
Здравствуйте, подскажите, пожалуйста, есть ли в php область видимости, как в питоне, nonlocal? То есть... вот есть функция(внешняя), в ней...

30
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.11.2020, 09:19  [ТС]
Студворк — интернет-сервис помощи студентам
Декораторы, вроде как, через @ делаются. Чтобы понять декораторы, думаю, что мне надо понять замыкания. А чтобы понять замыкания, наверное надо понять также, что в этой теме сейчас пытаюсь выяснить.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.11.2020, 10:34
@ - это сахар.

Python
1
2
@dec
def func(): pass
аналогично
Python
1
2
def func(): pass 
func = dec(func)
Про замыкания - не знаю, как таковые мне они никогда не пригождались (если не считать декораторов и "динамические методы" через __getattrinbute__)
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.11.2020, 17:11  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
но не знаешь что такое неизменяемые типы? Это 4 глава у Марка Лутца, 101 страница в его книге.
А какая там строка текста? А то не пойму, куда смотреть.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
24.11.2020, 17:25
а толку? там читать надо. Все. От корки до корки. А не местами поглядывать и создавать потом сотни тем. А читать ты не будешь, уже все поняли.

Скажу по секрету: программирование - это про чтение, если нет любви к этому и усидчивости, то надо что-то другое выбирать.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.11.2020, 18:42
Цитата Сообщение от Welemir1 Посмотреть сообщение
если нет любви к этому и усидчивости
У ТСа памяти нет, что тоже немаловажно.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
24.11.2020, 18:54
да, про это забыл упомянуть, как само собой разумеющееся)
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.11.2020, 21:36  [ТС]
Garry Galler, а в ваших примерах здесь показаны замыкания? А декораторы тоже?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.11.2020, 21:47
Цитата Сообщение от supmener Посмотреть сообщение
показаны замыкания?
Да. Замыкание это любая (почти) вложенная функция.

Замыкание — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости..
Wiki.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.11.2020, 21:55  [ТС]
А как поправить и дописать, чтобы работало?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def pereclucatel():
    tumbler = 'vikl'
    def vikl_vkl:
        nonlocal tumbler
        if tumbler = 'vikl':
            print("Включаем свет")
            return tumbler = 'vkl'
        else:
            print("Выключаем свет")
            return tumbler = 'vikl'
    return vikl_vkl
 
 
pereclucatel()
Вместо tumbler наверное лучше для конечного выключателя подошло бы название knopka
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
25.11.2020, 01:38
Цитата Сообщение от supmener Посмотреть сообщение
А как поправить и дописать, чтобы работало?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def pereclucatel():
    tumbler = 'vikl'
    def vikl_vkl():
        nonlocal tumbler
        if tumbler == 'vikl':
            print("Включаем свет")
            tumbler = 'vkl'
        else:
            print("Выключаем свет")
            tumbler = 'vikl'
    return vikl_vkl
 
knopka = pereclucatel()
knopka()
knopka()
Добавлено через 4 минуты
Переписал, используя код Garry Galler как образец. Сам я в замыканиях особо не шарю пока.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.11.2020, 05:06
Если надо хранить какое-либо состояние объекта - бери классы.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Switch:
    def __init__(self):
        self.is_on = False
        
    def click(self):
        if self.is_on:
            print("Выключаем свет")
            self.is_on = False
        else:
            print("Включаем свет")
            self.is_on = True
 
knopka = Switch()
knopka.click()
knopka.click()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2020, 05:06
Помогаю со студенческими работами здесь

Не удалось загрузить тип 'GuestBook_WebRole.Global'. Inherits="GuestBook_WebRole.Global" Language="C#" %>
выдает такую ошибку при запуске гостевой книги не знаю в чем дело, уже несколько раз переделывал и все также, прошу помощи Ошибка...

global в JS
Как из функции сказать, что данная переменная глобальна, если она используется в функции-родителе? Пример: funcparent=function() { ...

Global.asax
Помогите, мне очень ужен этот темплейт а его у меня нет, дайте пожалуйста:sorry: Global Aplication Class (Global.asax)

global variables
global variables Здравствуйте, у меня проблема с глобальными переменными.

Global name is not defined
import pygame, sys, random skier_images = ## Создаем лыжника: class SkierClass(pygame.sprite.Sprite): def...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru