Aspas simples vs as aspas duplas [fechado]

79

Acabei de iniciar um trabalho em que estou escrevendo Python depois de ter experiência com Java, e percebo que outros desenvolvedores tendem a citar seqüências de caracteres usando aspas simples ( '') em vez de aspas duplas ( ""). Por exemplo:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

Existe uma razão específica para isso além da preferência pessoal? Essa é a maneira correta de citar strings? Especificamente, o que eu quero saber é se existe algum tipo de prática recomendada padrão ou aceita que conduz esse estilo de codificação.

Eric Hydrick
fonte
5
Se você entrar Ruby, realmente existe uma diferença técnica entre aspas simples e duplas. As aspas duplas suportam a interpolação de string - aspas simples são analisadas como literais.
KChaloux #
5
O mesmo vale para Perl e a maioria das conchas.
Blrfl
18
Como essa pergunta "não é construtiva"? Como iniciante em python absoluto, preciso saber disso. Se você escrever um script bash, há uma grande diferença.
Magicsowon 10/10/16
19
Não é construtivo? Nossa. O primeiro resultado do google para "aspas simples e duplas python" mostra o que você precisa saber rapidamente. Obrigado por perguntar Eric e respondendo detly
aggieNick02

Respostas:

65

As outras respostas estão corretas, pois não faz diferença técnica, mas vi uma regra de estilo informal em alguns projetos de código aberto: aspas duplas são usadas para strings que podem eventualmente ser visíveis para o usuário (independentemente de serem necessárias ou não tradução) e aspas simples são para strings que se relacionam com a funcionalidade do próprio código (por exemplo, chaves dict, expressões regulares, SQL).

Essa certamente não é uma regra universal (ou mesmo codificada em um PEP), assim como qualquer outro aspecto arbitrário da codificação, ela se resume às regras locais.

Observe que o PEP 8 (que eu não havia notado quando escrevi esta resposta) diz :

Este PEP não faz uma recomendação para isso. Escolha uma regra e cumpra-a. Quando uma sequência contém caracteres de aspas simples ou duplas, use a outra para evitar barras invertidas na sequência. Melhora a legibilidade.

Como comenta um comentarista, isso não é necessariamente contraditório, dependendo de como você interpreta "regra". O que eu sugiro não funciona realmente com a segunda metade da citação.

detly
fonte
1
Pode ser um estilo interno, mas é contra o PEP 8: escolha um e use-o para todo o arquivo, independentemente do conteúdo.
Nils von Barth
4
@NilsvonBarth O PEP diz "escolha uma regra e cumpra-a", não "escolha um caractere delimitante e cumpra-o". "Aspas duplas para texto visível ao usuário, aspas simples para itens usados ​​pela máquina" parece ser uma regra perfeitamente adequada.
Tanner Swett 04/01
1
@ Tanner Swett Desculpe, você está certo; é o guia de estilo do Google Python que especifica "dentro de um arquivo" google.github.io/styleguide/pyguide.html#310-strings
Nils von Barth
Na verdade, o preto formata seqüências de caracteres Python para estar entre aspas duplas. Até o jslint deseja que as seqüências JavaSciprt sejam cercadas por aspas duplas. A maioria dos idiomas antigos nunca forneceu opções. Só porque você pode fazer isso não significa que você deveria. Claro, existem alguns casos em que isso é uma coisa muito boa de se ter, como quando você tem uma citação na string. Na prática, porém, a maioria das suas strings deve vir de um conjunto de dados que não é codificado em sua base de códigos.
Bobort 18/04
1
@bobort Mesmo que você esteja procurando strings em um sistema de tradução ou interface do usuário, muitas vezes ainda precisará de chaves de strings para aqueles em seu código. Mas concordo que as coisas seguiram em frente e não há realmente nenhum benefício para essa distinção.
detly 19/04
21

É muito simples:

  • As aspas simples permitem a incorporação não escapada de aspas duplas.
  • Aspas duplas permitem incorporar aspas simples não escapadas.

É mais Pythonic usar '(aspas simples) até que você precise de aspas duplas.

A citação a seguir é diretamente da documentação em literais String.

estão disponíveis em seqüências de caracteres Unicode. Um prefixo de 'b' ou 'B' é ignorado no Python 2; indica que o literal deve se tornar um literal de bytes no Python 3 (por exemplo, quando o código é convertido automaticamente com 2to3). Um prefixo 'u' ou 'b' pode ser seguido por um prefixo 'r'.

Nas cadeias de caracteres triplas, novas linhas e aspas sem escape são permitidas (e são mantidas), exceto que três aspas sem escape em uma linha terminam a sequência. (Uma "citação" é o caractere usado para abrir a string, ou seja, 'ou ".)


fonte
15
A questão, é claro, é: por que é Pythonic preferir aspas simples quando quase todas as outras línguas usam aspas duplas?
Martin Beckett
13
@MartinBeckett porque
3
Ahh, claro ;-)
Martin Beckett
6
@JarrodRoberson: Eu acho que "porque" (ou 'porque', se você quiser) é uma resposta válida, se estiver escrito em algum PEP (ou similar), que é o caminho Pythonic . Caso contrário, é apenas uma escolha pessoal.
Joachim Sauer
5
aspas simples olhar mais limpo e também não precisa de uma tecla shift para digitar
JoelFan
17

Do ponto de vista técnico, não faz diferença, do ponto de vista do estilo, alguns pensamentos:

  • A maioria das outras linguagens de programação usa aspas duplas.
  • Ao escrever em inglês, geralmente são usadas aspas duplas.
  • As aspas simples são úteis quando você tem muito texto não técnico / narrativo em seu aplicativo, pois permitem o uso de aspas duplas de maneira mais natural. bar = '"It\'s awesome" he said.'
  • Por outro lado, o caractere de aspas simples também é usado em algumas ocasiões no idioma inglês. bar = "\"It's awesome\" he said."
API-Beast
fonte
Observe que "também é frequentemente usado em seqüências de caracteres técnicas - e, por favor, você enviou" {dumb_thing}, mas isso é burro demais para nós! '
Christian Sauer
4

Não há diferença entre usar aspas simples e aspas duplas no Python. Em termos práticos, dependendo do tipo de dado com o qual você está trabalhando, você pode achar um ou outro estilo mais conveniente.

O tipo de citações usadas "por padrão" (onde não há motivo convincente para usar uma ou outra) é praticamente uma questão de preferência pessoal.

Para obter mais informações, consulte a seção Literais de strings na documentação do Python.

Greg Hewgill
fonte
4

Algumas coisas a considerar ao desenvolver o hábito de usar aspas simples ou duplas regularmente.

Aspas duplas requerem digitação com dois dedos; e, portanto, mais propensos a erros de digitação, bem como a uma diminuição da velocidade

Seu editor pode mostrar um personagem melhor que outro; para facilitar a depuração da sintaxe visual.

Os documentos usam caracteres triplos: qual é o melhor? "" "" "" ou '' '' ''

Embora eu não tenha visto isso no sistema operacional Windows, algumas ferramentas de sintaxe ou documentação podem esperar aspas simples com verso duplo.

Para a maioria dos tutoriais em Python que eu vi, vejo o oposto de sua experiência. Costumo ver aspas duplas usadas.

DevPlayer
fonte
4

Na minha opinião, prefiro usar aspas duplas para uma string.

Por quê? Para programadores de outras línguas, eles podem ser adaptados rapidamente e entender o código mais facilmente.

Se um programador C vê:

'Writing "It\'s big?" No.'

Será hesitante, em vez de:

"Writing \"It's big?\" No."
Lucio
fonte
3
"Escrever" é grande? "" Não. "
API-Beast
@ Lucio É o que tenho feito, só não sabia se estava violando algum tipo de padrão Python estabelecido ou não.
Eric Hydrick
@EricHydrick Não, você pode escolher um ou outro.
Lucio