Pergunta

De acordo com a documentação, eles são praticamente intercambiáveis.Há uma estilística razão para usar um sobre o outro?

Foi útil?

Solução

Eu gosto de usar aspas duplas em torno de cadeias de caracteres que são usados para interpolação ou de linguagem natural mensagens de e aspas simples para pequenas símbolo-como seqüências de caracteres, mas irá quebrar as regras, se as seqüências de caracteres contêm citações, ou se eu esquecer.Eu uso o triplo de aspas duplas para docstrings e matérias literais de seqüência de caracteres para expressões regulares, mesmo se eles não são necessários.

Por exemplo:

LIGHT_MESSAGES = {
    'English': "There are %(number_of_lights)s lights.",
    'Pirate':  "Arr! Thar be %(number_of_lights)s lights."
}

def lights_message(language, number_of_lights):
    """Return a language-appropriate string reporting the light count."""
    return LIGHT_MESSAGES[language] % locals()

def is_pirate(message):
    """Return True if the given message sounds piratical."""
    return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None

Outras dicas

Citando ao oficial de documentos em https://docs.python.org/2.0/ref/strings.html:

Na planície inglês:Literais de seqüência de caracteres podem ser colocados em correspondência aspas simples (') ou aspas duplas (").

Assim, não há nenhuma diferença.Em vez disso, as pessoas vão dizer que você escolher o estilo que combina com o contexto, e, para ser coerente,.E eu concordo -, acrescentando que é inútil tentar chegar com "convenções" para esse tipo de coisa, porque você só vai acabar confundindo qualquer recém-chegados.

Eu costumava preferir ', especialmente para '''docstrings''', como eu encontrar """this creates some fluff""".Também, ' pode ser digitado sem o Mudança chave no meu Suíço-alemão teclado.

Eu tenho desde que mudou para utilizar aspas triplas para """docstrings""", para de acordo com a PEP 257.

Eu estou com Vontade:

  • Aspas duplas para texto
  • As aspas simples para qualquer coisa que se comporta como um identificador
  • Entre aspas duplas matérias literais de seqüência de caracteres para regexps
  • Triplicou aspas duplas para docstrings

Eu vou ficar com o que, mesmo se isso significa um monte de escapar.

Eu obter o máximo valor da única entre aspas identificadores de pé, porque as citações.O resto das práticas que estão lá apenas para dar aqueles único identificadores entre aspas alguns de pé.

Se a seqüência contém um, então você deve usar o outro.Por exemplo, "You're able to do this", ou 'He said "Hi!"'.Além disso, você deve simplesmente ser tão consistente quanto possível (dentro de um módulo, dentro de um pacote, dentro de um projeto, dentro de uma organização).

Se o seu código vai ser lido por pessoas que trabalham com C/C++ (ou, se você alternar entre os idiomas e Python), em seguida, usando '' por um único cadeias de caracteres, e "" para mais seqüências de caracteres podem ajudar a facilitar a transição.(O mesmo vale para outros idiomas, onde eles não são intercambiáveis).

O código Python que eu vi na natureza tende a favorecer " mais ', mas só um pouco.A única exceção é que """these""" são muito mais comuns do que '''these''', pelo que eu tenho visto.

Triplo citado comentários são interessantes subtópico da questão. PEP 257 especifica o triplo de cotações para doc strings.Fiz uma verificação rápida usando a Pesquisa de Código do Google e descobriu que triplo aspas duplas em Python são cerca de 10x tão popular como triplo aspas simples -- 1,3 M vs 131 K ocorrências no código que o Google indexa.Assim, na linha multi caso o código é, provavelmente, vai ser mais familiar para as pessoas se utiliza o triplo de aspas duplas.

"If you're going to use apostrophes, 
       ^

you'll definitely want to use double quotes".
   ^

Por essa simples razão, eu sempre usar aspas duplas no exterior. Sempre

Falando de buço, que bom que está modernizando o seu literais de seqüência de caracteres com ' se você estiver indo para usar caracteres de escape para representar apóstrofos?Não é ofender codificadores de ler romances?Eu não posso imaginar o quão doloroso de alta escola, aula de inglês foi para você!

Python usa aspas algo como isto:

mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'

print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6

O que dá a seguinte saída:

this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'

Eu uso aspas duplas em geral, mas não por qualquer razão específica - Provavelmente acabou de sair do hábito de Java.

Eu acho que você está também mais propensos a querer apóstrofos inline em uma seqüência de caracteres literal do que você querer aspas duplas.

Pessoalmente eu ficar com um ou com outro.Não importa.E fornecendo o seu próprio significado para citar apenas para confundir outras pessoas quando você colaborar.

É provavelmente um preferências de estilo, mais do que qualquer coisa.Acabei de verificar PEP 8 e não vi qualquer menção a única versus aspas duplas.

Eu prefiro aspas simples porque seu apenas um pressionamento de tecla em vez de dois.Que é, eu não tenho para pressionar a tecla shift para fazer uma cotação.

Em Perl que você deseja usar aspas simples quando você tem uma seqüência de caracteres que não precisa de interpolação de variáveis ou caracteres de escape como o , , , etc.

PHP faz a mesma distinção como Perl:conteúdo entre aspas simples não será interpretada (não mesmo serão convertidos), ao contrário de aspas duplas, que podem conter variáveis têm o seu valor impresso.

Python não, eu tenho medo.Tecnicamente visto, não há $ token (ou similares) para separar um nome/texto a partir de uma variável em Python.Ambas as funcionalidades fazer Python mais legível, menos confuso, depois de tudo.Aspas simples e duplas podem ser usados de forma intercambiável em Python.

Eu escolhi usar aspas porque eles são mais fáceis de ver.

Eu só uso o que golpeia a minha fantasia no tempo;é conveniente ser capaz de alternar entre as duas no capricho!

Claro que, quando a cotação cotação characetrs, a comutação entre os dois pode não ser tão lunático depois de tudo...

Sua equipe de gosto ou de seu projeto diretrizes de codificação.

Se você está em um ambiente multilíngüe, você pode querer incentivar o uso do mesmo tipo de cotações para seqüências de caracteres que os outros usos da linguagem, por exemplo.Outra coisa, eu pessoalmente gosto mais de olhar '

Nenhum que eu saiba.Apesar de que se você olhar para algumas código", " é comumente usado para seqüências de caracteres de texto (eu acho que é mais comum no texto que "), e "" não aparece no hashkeys e coisas assim.

Tenho como objetivo minimizar ambos os pixels e a surpresa.Eu normalmente prefiro ' a fim de minimizar pixels, mas " em vez disso, se a seqüência de caracteres tem um apóstrofo, novamente para minimizar pixels.Para uma docstring, no entanto, eu prefiro """ mais ''' porque o último não é padrão, incomum, e, portanto, surpreendente.Se agora eu tenho um monte de cadeias onde eu costumava " de acordo com a lógica acima, mas também aquele que pode sair com um ', Pode ser que eu ainda uso " para preservar a consistência, apenas para minimizar surpresa.

Talvez ele ajuda a pensar o pixel de minimização de filosofia da seguinte forma.Você prefere que o inglês caracteres parecia A B C ou AA BB CC?A última opção, resíduos de 50% dos não-vazio pixels.

Eu uso aspas porque eu venho fazendo isso por anos na maioria das linguagens (C++, Java, VB...) exceto o Bash, porque eu também usar aspas duplas no texto normal e porque eu estou usando um (modificado) do teclado inglês onde ambos os personagens exigem que a tecla shift.

' = "

/ = \ = \\

exemplo :

f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")

Os resultados são os mesmos

=>> não, eles não são o mesmo.Uma única barra invertida vai caracteres de escape.Você acabou de acontecer a sorte nesse exemplo, porque \k e \w não são válidos escapa-se como \t ou \n ou \\ ou \"

Se você quiser usar barras invertidas simples (e tê-los interpretado como tal), então você precisa usar um "cru" cadeia de caracteres.Você pode fazer isso colocando um"r'na frente da cadeia

im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'

Na medida caminhos no Windows estão em causa, barras são interpretados da mesma forma.Claramente a seqüência de caracteres é diferente embora.Eu não garante que eles são tratados desta forma, em um dispositivo externo embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top