Qual é o significado de _
depois for
neste código?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
Qual é o significado de _
depois for
neste código?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
len(tbh.bag.atom_set())
(se o valor retornado tem um__len__
método) ousum(1 for _ in tbh.bag.atom_set())
pylint
outra opção para nomes de variáveis fictícios, existe um prefixodummy_
para o nome da variável. O uso desse prefixo compylint
,pylint
não emite um aviso. Também é possível configurar o padrão de variável dummypylint
para acomodar coisas como__
.Respostas:
_
tem 4 principais usos convencionais em Python:raise forms.ValidationError(_("Please enter a correct username"))
label, has_label, _ = text.partition(':')
.def
oulambda
), onde a assinatura é fixa (por exemplo, por uma API de retorno de chamada ou de classe pai), mas essa implementação de função específica não precisa de todos os parâmetros, como em códigos como:callback = lambda _: True
(Por um longo tempo, essa resposta listou apenas os três primeiros casos de uso, mas o quarto caso surgiu com bastante frequência, como observado aqui , para valer a pena listar explicitamente)
Os últimos casos de uso "variável descartável ou nome do parâmetro" podem entrar em conflito com o caso de uso da pesquisa de tradução, portanto, é necessário evitar o uso
_
como variável descartável em qualquer bloco de código que também a use na tradução i18n (muitas pessoas preferem um sublinhado duplo ,__
como sua variável descartável exatamente por esse motivo).fonte
_
é o nome usado para a função que realiza pesquisas de tradução de cadeia de internacionalização e localização. Tenho certeza de que foi agettext
biblioteca C que estabeleceu essa convenção.__
(um sublinhado duplo) como minha variável descartável de uso geral para evitar conflitos com um dos dois primeiros casos de uso._
usadas como um nome de variável desde que comecei a usar o Python profissionalmente em 2002.a, __, c = iterable
informa imediatamente ao leitor que estamos descompactando uma tripla, mas apenas usando o primeiro e o último valores. Se, em vez escrevera, b, c = iterable
, o leitor (ou um linter código automatizado) pode razoavelmente esperar todosa
,b
ec
para ser usado mais tarde (e se eles não estão, pode ser um sinal de um algum lugar bug).É apenas um nome de variável e é convencional em python usar
_
para variáveis descartáveis. Apenas indica que a variável de loop não é realmente usada.fonte
_
, ele para de manter permanentemente o valor de saída da expressão anterior. Isso parece terrivelmente inconsistente, e os padrões do Python lang precisam resolver isso. Eles devem apenas definir_
como um nome descartável e impedir que seja usado como um identificador real.Sublinhado
_
é considerado como variável " Eu não me importo " ou " Throwaway " em PythonO interpretador python armazena o último valor da expressão na variável especial chamada
_
.O sublinhado
_
também é usado para ignorar os valores específicos. Se você não precisar dos valores específicos ou os valores não forem usados, apenas atribua os valores a sublinhado.Ignorar um valor ao desembalar
Ignore o índice
fonte
_("Hello world!")
.dis
módulo, descobri que não havia diferença no bytecode. Os benefícios da legibilidade humana são óbvios, no entanto.Existem 5 casos para usar o sublinhado no Python.
Para armazenar o valor da última expressão no intérprete.
Por ignorar os valores específicos. (chamado "eu não ligo")
Atribuir significados e funções especiais ao nome de variáveis ou funções.
Para usar como funções 'Internacionalização (i18n)' ou 'Localização (l10n)'.
Para separar os dígitos do valor literal do número.
Aqui está um bom artigo com exemplos de mingrammer .
fonte
No que diz respeito às linguagens Python,
_
não tem significado especial. É um identificador válido como_foo
,foo_
ou_f_o_o_
.Qualquer significado especial
_
é puramente por convenção. Vários casos são comuns:Um nome fictício quando uma variável não se destina a ser usada, mas um nome é requerido pela sintaxe / semântica.
Muitos REPLs / shells armazenam o resultado da última expressão de nível superior em
builtins._
.Devido à maneira como os nomes são pesquisados, a menos que ocultos por uma
_
definição global ou local a que o bare_
se referebuiltins._
.Nota: Alguns shells, como os
ipython
que não são atribuídos, são usados em casosbuiltins._
especiais_
.No contexto internacionalização e localização,
_
é usado como um alias para a função de tradução primária.fonte