Что может пойти не так, если я непреднамеренно перезаписываю/маскирует встроенную функцию в Python?Переписывание встроенной функции в Python
Могу ли я испытать что-нибудь хуже, чем очевидная ошибка доступа к локальной функции вместо встроенной функции?
Например:
def max(a, b):
pass
class MyCompileTool(object):
def __init__(self, id):
self.id = id
def compile(self):
min = "3.4.4"
...
Даже в некоторых официальных модулей: argparse.add_argument(..., type, ...)
Существует много возможных сценариев, основанных на факте, что кто-то/вы не будете теперь/забывать об этом и попытаетесь назвать эти функции. Эти вопросы кажутся слишком широкими. Кроме того, обратите внимание, что в вашем примере вы не изменяете встроенные модули, просто создавайте локальные переменные, которые затеняют встроенные модули только в рамках метода 'compile'. – BartoszKP
Разве это не очевидно ?! Вы можете случайно вызвать неправильную функцию и либо получить ошибку, либо (что еще хуже) получить неверный результат. Обратите внимание, что ** переписывание ** встроенных модулей (намеренно) очень сложно сделать случайно, это ** затенение ** их, что вам нужно следить. Такие инструменты, как 'pylint', предупредит вас об этом. Также избегайте импорта подстановочных знаков ('from foo import *') по той же причине. – jonrsharpe
Я чувствую, что OP действительно спрашивает: «Помимо очевидной ошибки, когда вы больше не можете получить доступ к этой функции, есть ли какие-либо последствия, такие как« внутренние функции Python, которые используют «max», будут запутаны и сбой, когда они смогут », t найти обычную реализацию?? ". На что ответ, IIRC, «нет». – Kevin