Qual é o formato de cabeçalho comum dos arquivos Python?

encontrei o seguinte formato de cabeçalho para os ficheiros de código Python num documento sobre as directrizes de codificação Python:

#!/usr/bin/env python

"""Foobar.py: Description of what foobar does."""

__author__      = "Barack Obama"
__copyright__   = "Copyright 2009, Planet Earth"

Este é o formato padrão dos cabeçalhos no mundo Python? Que outros campos / informações Posso colocar no cabeçalho? Os gurus Python partilham as suas orientações para os cabeçalhos de código em Python: -)

Author: Martin Thoma, 2009-10-06

4 answers

Todos os seus metadados para o módulo Foobar.

O primeiro é o docstring do módulo, que já está explicado na resposta de Pedro .

Como organizo os meus módulos (ficheiros de código)? (Arquivo)

A primeira linha de cada ficheiro deve ser #!/usr/bin/env python. isto torna possível executar o ficheiro como um script invocando implicitamente o interpretador, por exemplo, num contexto CGI.

a seguir deve ser a docstring com uma descrição. Se a descrição é longa, a primeira linha deve ser um breve resumo que faz sentido por si só, separado do resto por uma nova linha.

Todos os códigos, incluindo declarações de importação, devem seguir a docstring. caso contrário, a docstring não será reconhecida pelo intérprete, e você não terá acesso a ela em sessões interativas (ou seja, através de obj.__doc__) ou ao gerar documentação com ferramentas automatizadas.

Importar módulos embutidos em primeiro lugar, seguidos de módulos de terceiros, seguidos de quaisquer alterações no caminho e seus próprios módulos. especialmente, adições ao caminho e nomes de seus módulos são susceptíveis de mudar rapidamente: mantê-los em um lugar torna mais fácil encontrá-los.

A seguir devem ser Informações de autoria. esta informação deve seguir este formato:

__author__ = "Rob Knight, Gavin Huttley, and Peter Maxwell"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Rob Knight", "Peter Maxwell", "Gavin Huttley",
                    "Matthew Wakefield"]
__license__ = "GPL"
__version__ = "1.0.1"
__maintainer__ = "Rob Knight"
__email__ = "[email protected]"
__status__ = "Production"

O estatuto deve ser tipicamente um dos "protótipos", "desenvolvimento"ou " produção". __maintainer__ deve ser o pessoa que vai corrigir erros e fazer melhorias se importado. __credits__ difere de __author__ na medida em que __credits__ inclui pessoas que reportaram correcções de erros, fizeram sugestões, etc. mas não escreveu o código.

Aqui você tem mais informações de listagem __author__, __authors__, __contact__, __copyright__, __license__, __deprecated__, __date__ e __version__ reconhecido como metadados.

 465
Author: Esteban Küber, 2017-05-23 12:34:30

Eu sou fortemente a favor dos cabeçalhos mínimos dos ficheiros, ou seja, apenas:

  • a hashbang ({[[0]} linha) se este for um programa executável
  • docstring do Módulo
  • Importações, agrupadas como descrito na resposta da voyager.
Tudo o resto é uma perda de tempo, espaço visual e é activamente enganador.

Se tiver declarações de exoneração de responsabilidade legais ou informações de licença, vai para um ficheiro separado. Ele não precisa infectar todos os arquivos de código fonte. Sua os direitos de autor devem fazer parte disto. As pessoas devem ser capazes de encontrá-lo em seu arquivo LICENSE, Não código fonte Aleatório.

Metadados como a autoria e as datas já são mantidos pelo seu controlo de origem. Não há necessidade de adicionar uma versão menos detalhada, errônea e desactualizada da mesma informação no próprio arquivo.

Não acredito que haja outros dados que toda a gente precise de colocar em todos os seus ficheiros de origem. Você pode ter algum requisito particular para fazê-lo, mas tais coisas aplica-te, por definição, apenas a ti. Eles não têm lugar em "cabeçalhos gerais recomendados para todos".
 126
Author: Jonathan Hartley, 2013-04-04 14:42:09

Ver também PEP 263 Se estiver a utilizar um conjunto de caracteres não ascii

Resumo

Este PEP propõe introduzir uma sintaxe para declarar a codificação de um ficheiro de código Python. A informação de codificação é então usada pelo Analisador Python para interpretar o ficheiro com a codificação indicada. Mais notavelmente, isso aumenta a interpretação de literais Unicode em o código fonte e torna possível escrever literais Unicode = = ligações externas = = UTF-8 directly in an Unicode aware editor.

Problema

Em Python 2. 1, os literais Unicode só podem ser escritos usando a Latin - 1 based encoding "unicode-escape". Isto faz com que o ambiente de programação pouco amigável para os usuários Python que vivem e trabalhar em locais não-latinos - 1, como muitos dos asiáticos pais. Os programadores podem escrever as suas cadeias de 8 bits usando o codificação favorita, mas está ligada à codificação "unicode-escape" para Unicode literals.

Solução Proposta

Proponho que a codificação do código-fonte Python seja visível e alterável numa base de ficheiro por fonte, usando um comentário especial no topo do arquivo para declarar a codificação.

Para tornar o Python ciente desta Declaração de codificação, um número de são necessárias alterações de conceitos no que se refere ao tratamento de Dados do código-fonte Python.

Definir a codificação

Python será por omissão o ASCII como codificação-padrão se nenhuma outra são dadas dicas de codificação.

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

      # coding=<encoding name>

Ou (usando formatos reconhecidos pelos editores populares)

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

Ou

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

...

 18
Author: John La Rooy, 2014-06-18 02:06:55

As respostas acima estão realmente completas, mas se quiser um cabeçalho rápido e sujo para o copy'n paste, use isto:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Module documentation goes here
   and here
   and ...
"""
Porque é que esta é boa?
  • a primeira linha é para os utilizadores do nix. Ele irá escolher o interpretador Python no caminho do usuário, então irá escolher automaticamente o interpretador preferido do Usuário.
  • o segundo é a codificação do ficheiro. Hoje em dia todos os arquivos devem ter uma codificação associada. UTF-8 vai funcionar em todo o lado. Apenas projetos legados usariam outros codificacao.
  • e uma documentação muito simples. Pode encher várias linhas.

Ver também: https://www.python.org/dev/peps/pep-0263/

{[[2]} Se você apenas escrever uma classe em cada arquivo, você nem mesmo precisa da documentação (ele iria dentro da classe doc).
 14
Author: neves, 2018-04-04 14:13:50