Плохая ли практика изменять код, чтобы удовлетворить Линтеру?Python

Программы на Python
Anonymous
Плохая ли практика изменять код, чтобы удовлетворить Линтеру?

Сообщение Anonymous »

Я использую neovim и использую линтер pyright через mason-lspconfig для статической проверки типа моего кода. Я пишу много подсказок по типу; вот пример:

Код: Выделить всё

def example(user_input: str) -> None:
tokens: List[Token] = []
position = 0
length_of_input: int = len(user_input)

while position < length_of_input:
match: Union[re.Match[str], None] = None

sliced_input = user_input[position:]

# There's more code but you probably get the point
У меня есть ряд вопросов относительно лучших практик использования подсказок типов:
  • Если функция возвращает None, следует вы все еще указываете это, как я это делаю в примере функции?
  • Я вижу, что многие другие программисты Python используют AnyStr вместо str. Я не спрашиваю почему, я просто хочу знать, имеет ли это значение и не является ли использование str вместо AnyStr плохой практикой.
Вот где Перехожу к части об удовлетворении линтера. Вот как изначально выглядел мой код:

Код: Выделить всё

# There's a lot of context that goes with this but just assume factor_node_result.tokens is a List
tokens = factor_node_result.tokens.copy()
Линтер мне об этом сообщает

Код: Выделить всё

None has no method copy()
Я изменил это на это, чтобы оно перестало жаловаться; однако обе версии моего кода работают. Линтер просто перестает жаловаться, когда я использую эту версию:

Код: Выделить всё

if factor_node_result.tokens is not None:
tokens = factor_node_result.tokens.copy()
  • Могу ли я в любом случае использовать магию подсказок типов или настроить свой линтер так, чтобы каким-то образом игнорировать этот вид проверки?
  • Есть менять код ради удовлетворения линтера — плохая практика?


Подробнее здесь: https://stackoverflow.com/questions/775 ... the-linter

Вернуться в «Python»