Информатика ЕГЭ | Илья Андрианов | itpy 🧑‍💻
1.23K subscribers
280 photos
23 videos
19 files
673 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
☄️ Конфликт имён при использовании import * #tpy

Иногда при решении задач ЕГЭ (например 8 номера) учащиеся подключают модули с помощью записи:
from itertools import *

⚠️ Однако это может привести к конфликту имён и ошибкам в программе!


📎 Рассмотрим пример:
count = 0
from itertools import *
for p in permutations('abc'):
count += 1
print(count, p)

💻 Результат:
TypeError: unsupported operand type(s) for +=: 'type' and 'int'


👀 Почему же так получается?
⚙️ Причина в том, что в модуле itertools уже существует объект с именем count, и при импорте через * он перезаписывает нашу переменную count.
В итоге переменная становится функцией, и операция += 1 вызывает ошибку.


✔️ Как рекомендуется делать, чтобы такого не происходило:
count = 0
from itertools import permutations

for p in permutations('abc'):
count += 1
print(count, p)


💻 Вывод программы:
1 ('a', 'b', 'c')
2 ('a', 'c', 'b')
3 ('b', 'a', 'c')
4 ('b', 'c', 'a')
5 ('c', 'a', 'b')
6 ('c', 'b', 'a')

🙂 теперь конфликт имен не возникает, так как мы импортировали, только то, что нам нужно, и count - это все так же наша переменная.


Напоминаю, что ещё больше полезного контента по образованию и саморазвитию вы найдёте на каналах моих коллег, которые я собрал для вас в одну папку 👇👇👇
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥2❤‍🔥1