1) Zen of Python # 19: «Пространства имен - это одна замечательная идея - давайте сделаем еще больше!»
Именованные модули хороши тем, что они исключают любую возможностьстолкновение между функциями с одинаковыми именами.Если бы все было встроено, то os.error()
столкнулось бы с logging.error()
(и, не дай бог, вы попытаетесь определить свою собственную функцию с именем error()
!)
То же самое со встроенной функцией int()
и random.int()
функция.Вы должны были бы написать последний как random_int()
, который так же типичен, как и синтаксис модуля.Почему бы не сделать пространства имен явными и использовать модули?
Это та же самая причина, по которой синтаксис from os import *
не одобряется - он загрязняет ваше пространство имен и дает возможность вызывать ошибки при столкновении имен.
2) Кто решает, что такое встроенный модуль и что такое модуль?
Большинство программ, которые вы пишете лично, включают os
и re
.Лично каждый сценарий, который я написал за последние три месяца, включал sqlite3
, csv
и logging
.Должны ли они быть включены в качестве встроенных для каждой программы, которую когда-либо пишет любой программист Python?
Через некоторое время ваш список встроенных функций станет больше, чем Бен Хур.