Форум сайта python.su
0
Всем привет! Учусь потихоньку языку программированию python по книге “A Byte of Python” и дочитал уже до пункта, указанного в заголовке темы, вот у меня вопрос:
Насколько я понял, в пункте про “Зарезервированное слово «global»” говорят о том, что можно переменную объявленную в функции, объявить глобальной, как я понял в таком случае, значение её переменной будет доступно в любых других функциях? Тогда чем она отличается от переменных объявленных во внешнем блоке? Почему просто не вынести эту переменную во внешний блок и все?
И если кто может объясните про nonlocal тоже, спасибо!
Офлайн
253
IamDenisПотому что в питоне явное лучше неявного.
Почему просто не вынести эту переменную во внешний блок и все?
a=1 def fun1(): print(a) def fun2(): a+=1 fun1() fun2() >>> 1 Traceback (most recent call last): File "<editor selection>", line 7, in <module> File "<editor selection>", line 5, in fun2 UnboundLocalError: local variable 'a' referenced before assignment
IamDenis
кто может объясните про nonlocal
a=1 def fun1(): a=2 def fun2(): nonlocal a print("nonlocal",a) def fun3(): global a print("global in",a) def fun4(): print("none",a) fun2() fun3() fun4() print("global",a) fun1() >>> global 1 nonlocal 2 global in 1 none 2
Офлайн
857
IamDenisДа, будет.
говорят о том, что можно переменную объявленную в функции, объявить глобальной, как я понял в таком случае, значение её переменной будет доступно в любых других функциях?
IamDenisТем, что ты её сможешь менять (менять её значение) внутри той функции, где она объявлена. А у просто объявленной снаружи ты сможешь только читать значение внутри функции.
Тогда чем она отличается от переменных объявленных во внешнем блоке?
Отредактировано py.user.next (Дек. 12, 2021 09:22:27)
Офлайн
0
Понял, принял господа. 
От души благодарю за объяснение!
p.s: Что скажете насчет книги “Майкл Доусон - Программируем на Пайтон”, я её тоже начинал читать, совсем немного, но там столько “воды”, что, чтение этой книги мне не приносило особого удовольствия, а наоборот, мне приходилось применять силу воли, чтобы продолжать. Однако там есть задачки для самопроверки, которых нет в книге которую я читаю сейчас, но нынешняя книга в чтении гораздо приятней.
Просто хотел спросить у вас совет, что думаете по этой книге?
Офлайн