Мой вопрос возникает от this question, в котором пользователь запутался, неосознанно переплетая встроенный глобальный set
. Есть ли простой способ заставить python предупредить вас, когда вы пытаетесь переопределить встроенный?Есть ли способ защитить встроенные в python?
Я думаю более конкретно о Mathematica. В Mathematica все встроенные элементы имеют атрибут Protected
. Если вы попытаетесь переопределить Set
, он скажет вам, что Set
- Protected
, и оставьте его без изменений, возможно, избавив вас от серьезной путаницы позже, когда вещи, которые должны работать, перестают делать это без всякой очевидной причины. Если вы действительно серьезно хотите переопределить Set
, вы все равно можете это сделать - вам просто нужно это сделать Unprotect
. И вы можете также использовать свои собственные символы, чтобы защитить их от случайного переопределения.
Возможно, опытные питонисты не нуждаются в этом, но было бы неплохо, если бы такие новички, как я, были что-то вроде этого. (Давай думать об этом, я был программирования Mathematica в течение 15 лет и до сих пор иногда Protected
сохраняет свой бекон.)
Нет, Python не будет предупреждать вас об установке имен, создающих теневые встроенные модули. Это ваша собственная ответственность. Иногда присвоение переменной 'id' - это просто билет, я бы не хотел, чтобы каждый раз, когда я это делаю, я не хочу предупреждать о встроенной функции id(). –
'pylint' обнаружит это, но только ключевые слова (например,' def', 'for') будут« защищены »от переназначения. – jonrsharpe
Используйте linter, если вас беспокоит такая вещь; хороший linter предупредит вас об этом и многом другом. –