Zen of Python
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Show more📈 Analytical overview of Telegram channel Zen of Python
Channel Zen of Python (@zen_of_python) in the Russian language segment is an active participant. Currently, the community unites 19 291 subscribers, ranking 6 982 in the Technologies & Applications category and 35 074 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 19 291 subscribers.
According to the latest data from 07 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 37 over the last 30 days and by -4 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 12.78%. Within the first 24 hours after publication, content typically collects 5.66% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 464 views. Within the first day, a publication typically gains 1 092 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
- Thematic interests: Content is focused on key topics such as github, rust, pip, api, install.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
Thanks to the high frequency of updates (latest data received on 08 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
a = 1
b = 2
def add(a, b):
return a + b
add(a, b)
Эта функция берет два аргумента и возвращает их сумму. Результат зависит только от входных данных, и add() не изменяет ничего вне своей области.
Нечистые функции могут изменять состояние программы (то есть объектов в ней) или иметь побочные эффекты, такие как модификация глобальных переменных, вывод данных в консоль или работа с файлами. Предсказать результат программы с такой «участницей» порой бывает очень трудно, и потому в учебниках часто рекомендуют избегать таких функций в первые годы программирования.
Пример:
def append_element(lst, element):
lst.append(element)
my_list = [1, 2, 3]
append_element(my_list, 4)
print(my_list) # [1, 2, 3, 4]
В этом примере функция append_element() изменяет глобальную переменную my_list. Каждый раз при вызове функции, состояние программы (то есть списка) изменяется.
Идеальная программа должна сочетать в себе как можно больше чистых функций для большей предсказуемости, в то время как нечистые функции следует использовать только при необходимости взаимодействия с внешним миром.
Теперь к вопросу про константы (если верно понимаю вопрос).
В этой теме критически важно помнить про изменяемые и неизменяемые объекты, поскольку это влияет на их способность меняться под действием «грязных» функций:
Изменяемые объекты — списки, словари, множества, байтовые массивы. Неизменяемые объекты — числа, строки, кортежи, фиксированные множества.
В первом примере мы возьмем переменные a и b, равные 1 и 2 соответственно, и отправить аргументами add():
a = 1
b = 2
def add(a, b):
a += 1
return a + b
print(add(a, b)) # 4
print(a) # 1
Намеренно слегка модифицируем add() и добавим увеличение a на единицу (a += 1), чтобы вы могли сравнить работу «чистой» и «грязной» функций.
В локальной области видимости add() фактически создаются другие аргументы a и b. Поэтому при вызове a вне функции мы получим исходное ее значение — единицу.
Если теперь сделать add() «грязной», то таким образом:
a = 1
b = 2
def add():
global a # Указываем, что будем использовать глобальную переменную a
a += 1 # Изменяем значение глобальной переменной
return a + b
print(add()) # Вывод: 4
print(a) # Теперь вывод: 2, так как a была изменена
Обратите внимание, что в аргументы в скобки add() при объявлении функции теперь не подаются. Если вызывать из глобальной функции a, то она фактически больше не является константой (становится переменной).
#основы
@zen_of_python
a = 1
b = 2
def add(a, b):
return a + b
add(a, b)
Эта функция берет два аргумента и возвращает их сумму. Результат зависит только от входных данных, и add() не изменяет ничего вне своей области.
Нечистые функции могут изменять состояние программы (то есть объектов в ней) или иметь побочные эффекты, такие как модификация глобальных переменных, вывод данных в консоль или работа с файлами. Предсказать результат программы с такой «участницей» порой бывает очень трудно, и потому в учебниках часто рекомендуют избегать таких функций в первые годы программирования.
Пример:
def append_element(lst, element):
lst.append(element)
my_list = [1, 2, 3]
append_element(my_list, 4)
print(my_list) # [1, 2, 3, 4]
В этом примере функция append_element() изменяет глобальную переменную my_list. Каждый раз при вызове функции, состояние программы (то есть списка) изменяется.
Идеальная программа должна сочетать в себе как можно больше чистых функций для большей предсказуемости, в то время как нечистые функции следует использовать только при необходимости взаимодействия с внешним миром.
Теперь к вопросу про константы (если верно понимаю вопрос).
В этой теме критически важно помнить про изменяемые и неизменяемые объекты, поскольку это влияет на их способность меняться под действием «грязных» функций:
Изменяемые объекты — списки, словари, множества, байтовые массивы. Неизменяемые объекты — числа, строки, кортежи, фиксированные множества.
В первом примере мы возьмем переменные a и b, равные 1 и 2 соответственно, и отправить аргументами add():
a = 1
b = 2
def add(a, b):
a += 1
return a + b
print(add(a, b)) # 4
print(a) # 1
Намеренно слегка модифицируем add() и добавим увеличение a на единицу (a += 1), чтобы вы могли сравнить работу «чистой» и «грязной» функций.
В локальной области видимости add() фактически создаются другие аргументы a и b. Поэтому при вызове a вне функции мы получим исходное ее значение — единицу.
Если теперь сделать add() «грязной», то таким образом:
a = 1
b = 2
def add():
global a # Указываем, что будем использовать глобальную переменную a
a += 1 # Изменяем значение глобальной переменной
return a + b
print(add()) # Вывод: 4
print(a) # Теперь вывод: 2, так как a была изменена
Обратите внимание, что в аргументы в скобки add() при объявлении функции теперь не подаются. Если вызывать из глобальной функции a, то она фактически больше не является константой (становится переменной).
Вы можете использовать суффиксы в именах аргументов (например, _copy или _mod) или именовать аргументы так, чтобы они подсказали, что это копии или измененные версии переменных. Это неформальная практика, так как сама по себе особая конвенция об именовании аргументов для «чистых» и «грязных» функций не установлена в литературе, но она полезна для повседневного кодирования, чтобы избегать побочных эффектов и путаницы.
#основы
@zen_of_python
G = gen()
В этой строке создается объект генератора G, но код внутри функции gen() не начинает выполняться, пока не будет вызван next(G).
2. Первый вызов next(G):
print(next(G)) # 0
Когда вы вызываете next(G) в первый раз, генератор начинает выполнение с начала функции gen(). Внутри функции запускается цикл for и выполняется первая итерация, где i становится равным 0. Затем происходит yield i, что означает, что значение 0 возвращается, и генератор приостанавливается. Значение 0 выводится на экран.
3. Второй вызов next(G):
print(next(G)) # None 1
Теперь, когда вы вызываете next(G) во второй раз, генератор продолжает выполнение с той точки, где он был приостановлен (после yield). В этот момент выполнение доходит до X = yield i, и так как вызывается next(G) без передачи аргумента, X будет установлено в значение None. Затем срабатывает print(X), и выводится None.
Затем генератор продолжает выполнение, и значение X становится равным 1.
Available now! Telegram Research 2025 — the year's key insights 
