Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida Encoding: # -*- coding: UTF-8 -*- ou #coding: UTF-8?

Boa tarde,

A minha dúvida é mais em relação à boas práticas e à padronização, sou novo no Python e estou optando por utilizar o Sublime Text 3 e o Terminal para as atividades, em algumas pesquisar que eu realizei sobre o Python e olhadas em códigos no GitHub, vi que tem pessoa que utilizam o # -*- coding: UTF-8 -*- e algumas utilizam apenas # coding: UTF-8. Gostaria de saber se a falta do -*- no início e no final do comentário implica em alguma coisa? Isso muda de versão para versão?

A outra dúvida que surgiu é a respeito da posição que eu vou colocar, primeiro no arquivo (.py) eu tenho que colocar o # coding: UTF-8 ou eu faço primeiro a referência do arquivo (comentário com o nome/caminho do arquivo)? Vi também que tem alguns desenvolvedor que utilizam o #!/usr/bin/python para referenciar onde está o arquivo, faz alguma diferença?

Desde já agradeço e obrigado.

2 respostas
solução!

Oi Felipe, boa tarde, seguindo a própria documentação do python é possível encontrar o seguinte (https://www.python.org/dev/peps/pep-0263/):

Defining the Encoding Python will default to ASCII as standard encoding if no other encoding hints are given.

To define a source code encoding, a magic comment must be placed into the source files either as first or second line in the file, such as:

          # coding=<encoding name>

or (using formats recognized by popular editors)

          #!/usr/bin/python
          # -*- coding: <encoding name> -*-

or

          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :

More precisely, the first or second line must match the regular expression "^[ \t\v]#.?coding[:=][ \t]*([-_.a-zA-Z0-9]+)". The first group of this expression is then interpreted as encoding name. If the encoding is unknown to Python, an error is raised during compilation. There must not be any Python statement on the line that contains the encoding declaration. If the first line matches the second line is ignored.

Tradução minha:

Definindo o Encoding Python usará o padrão para a codificação ASCII se nenhuma outra for fornecida.

Para definir um código-fonte de codificação um comentário mágico deve ser identificado/colocado nos arquivos fontes ou como primeira ou como segunda linha no arquivo, tais como:

 # coding=<encoding name>

ou usando formatos reconhecidos por editores populares

          #!/usr/bin/python
          # -*- coding: <encoding name> -*-

ou

          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :

Para definir uma codificação de código-fonte, um comentário mágico deve ser colocados nos arquivos de origem , quer como primeiro ou segundo linha no arquivo , tais como:

          # Codificação = < nome de codificação >

ou (usando formatos reconhecidos pelos editores populares )

          # ! / Usr / bin / python
          # - * - Coding : <encoding name> - * -

ou

          # ! / Usr / bin / python
          # Vim: definir fileEncoding = <encoding name> :

Mais precisamente , a primeira ou a segunda linha precisam corresponder a expressão regular " . ^ [ \ T \ v] # codificação? [: =] [ \ T ] * ( [ -_ a-zA- Z0-9 . ] + ) " O primeiro grupo dessa expressão é interpretado como nome da codificação. Se a codificação for desconhecida pelo Python, um erro é gerado durante a compilação (tente usar algo estranho aí.. :) Lá na linha onde a declaração da codificação é definida não deve haver qualquer declaração Python declaração de codificação . Se a primeira linha corresponde à segunda esta é ignorada .

Algo deu errado e não apareceu corretamente quando postei, só uma retificação aqui:

          # Codificação = < nome de codificação

ou

          # ! / Usr / bin / python
          # - * - Coding : <encoding name> - * -

ou

          # ! / Usr / bin / python
          # Vim: definir fileEncoding = <encoding name> :

Acho que era isso, abraços Felipe.