Mit PEP8 und PEP257 ist es nicht peinlich, Python-Codierung zu zeigen!

Einführung

Hallo. Ist der von Ihnen geschriebene Quellcode sofort leicht zu lesen?

Es gibt viele Möglichkeiten für andere Personen als Sie, den von Ihnen geschriebenen Code zu sehen, z. B. wenn Sie gemeinsam mit mehreren Personen entwickeln, ihn im Internet veröffentlichen oder bereitstellen. Wenn der Code, den Sie zu solchen Zeiten schreiben, gut formatiert ist, können Sie ihn schnell und ohne Missverständnisse verstehen, nicht nur für den Leser, sondern auch für die Überprüfung Ihres eigenen Codes.

In solchen Fällen lauten die Konventionen zum Formatieren des Python-Codes ** PEP 8 ** und ** PEP 257 **.

In diesem Artikel werde ich einige typische Regeln vorstellen, die beiläufig verstanden werden können und das minimale Erscheinungsbild ** erreichen, anstatt den Inhalten von PEP 8 und PEP 257 strikt zu folgen. Machen.

Shebang, magischer Kommentar

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

Zunächst wird dies häufig am Anfang des Codes geschrieben. Die erste Zeile ist ** Shiban (Sheban) ** und die zweite Zeile heißt ** Magic Comment **.

** Shiban ** beschreibt so etwas wie "Bitte führen Sie diese Datei mit diesem Programm aus".

Wenn Sie dies schreiben, wenn Sie diesen Code ausführen möchten (vorübergehend sample.py genannt),

$ python sample.py

nicht

$ ./sample.py

Sie können es mit dem Befehl von ausführen.

Als nächstes folgt ** Magic Comment **, der laut PEP8 ** nicht erforderlich ** ist, wenn es sich um Python3-Quellcode handelt, der in UTF-8 geschrieben ist.

Der magische Kommentar beschreibt die Zeichencodierung des geschriebenen Codes und sollte anscheinend nicht beschrieben werden, da der Standardzeichencode in Python 3 UTF-8 ist.

Importanweisung

Es gibt drei Hauptregeln für Importanweisungen.

# OK
import os
import sys

# NG
import sys, os
from sklearn.model_selection import GridSearchCV, train_test_split
import os
import sys

from sklearn.model_selection import GridSearchCV, train_test_split

from mypackage import sample

Docstring

Eine Beschreibung der definierten Funktion oder Klasse. Dies ist eine Menge Arbeit zu beschreiben, aber es sieht mit und ohne anders aus.

def my_func(x):
    """
Gibt den quadratischen Wert zurück.

    Parameters
    ----------
    x : int
Ganzzahliger Zielwert

    Returns
    -------
    y : int
Quadratischen Wert eingeben
    """
    y = x ** 2
    return y

Schließen Sie den Docstring in ** 3 doppelte Anführungszeichen ** ein. Einfaches Zitat ist NG. Sie können den Inhalt nach der Zeile mit doppelten Anführungszeichen schreiben.

#Dies ist auch in Ordnung
def my_func_hoge(x):
    """Gibt den quadratischen Wert zurück.

    Parameters
    ----------
    x : int
Ganzzahliger Zielwert

    Returns
    -------
    y : int
Quadratischen Wert eingeben
    """
    y = x ** 2
    return y


#Schreiben wir wenigstens eine Zusammenfassung.
def my_func_fuga(x):
    """Gibt den quadratischen Wert zurück."""
    y = x ** 2
    return y

Schreiben Sie in die erste Zeile eine Zusammenfassung der Zielfunktion oder -klasse. Stellen Sie als Einschränkung sicher, dass das letzte Zeichen eine halbe Breite ** enthält.

Fügen Sie nach der Zusammenfassung eine Leerzeile ein, um die Argumente aufzulisten, und fügen Sie nach dem Argument eine Leerzeile ein, um die Rückgabewerte aufzulisten.

Es scheint, dass es Dinge gibt, die gut mit Jupyter usw. sind, wenn Sie dies schreiben, aber die Erklärung hier wird weggelassen.

Einzug

Dies ist das sogenannte Absenken. Verwenden Sie ** 4 Leerzeichen ** anstelle von Tabulatoren. Bei Verwendung von Tensorflow ist der Einzug jedoch tendenziell tief, sodass zwei Leerzeichen zulässig sind.

#Wenn das Argument der Funktion lang wird, wird die Zeile entsprechend der Position in der linken Klammer unterbrochen.
a = long_name_function(hikisu_ichi, hikisu_ni,
                       hikisu_san, hikisu_yon)

#Senken Sie den Einzug und beginnen Sie eine neue Zeile
b = long_name_function(
    hikisu_ichi, hikisu_ni,
    hikisu_san, hikisu_yon)

#Zeilenumbrüche mit abgesenktem Einzug von der Mitte sind NG
c = long_name_function(hikisu_ichi, hikisu_ni,
    hikisu_san, hikisu_yon)

Bricht in langen Formeln

#Es ist in Ordnung, wenn einheitlich ist, ob vor oder nach der Formel gebrochen werden soll
result_1 = (sushiki_ichi
            + sushiki_ni
            - (sushiki_san - susiki_yon)
            - susiki_go)

result_2 = (sushiki_ichi +
            sushiki_ni -
            (sushiki_san - susiki_yon) -
            susiki_go)

Zeilenabstand

Lassen Sie im Prinzip zwei Zeilen auf der obersten Ebene, dh Zeilenumbrüche ohne Einrückung, und ansonsten eine oder weniger Zeilen.

Gibt an, ob ein Leerzeichen in der Zeile geöffnet werden soll

# OK
hoge = {'fuga': [0]}

# NG
hoge = { 'fuga': [ 0 ] }
# OK
if a == b:
    c = {'d': 1}

# NG
if a == b :
    c = {'d' : 1}

#Die Ausnahme ist der Doppelpunkt, der zum Schneiden verwendet wird
array[2:5]
a = i + 1
b = c >= d
e = f not in g_list
h = j and k

#Es wird jedoch verwendet, um Standardparameter in Funktionen usw. zu beschreiben.=Lassen Sie auf beiden Seiten keinen Platz
def hoge(piyo=None):
    pass

#Wird verwendet, um Argumente bei der Angabe von Funktionsschlüsselwörtern zu beschreiben=Lassen Sie auf beiden Seiten keinen Platz
piyopiyo = hoge(piyo=1)
x = (b + (b**2 - 4*a*c) ** 0.5) / (-2*a)

Zusammenfassung

Wie war es? Dieses Mal haben wir nicht alle PEP 8 und PEP 257 behandelt, aber ich hoffe, dass Sie ungefähr verstehen, auf welche Art von Punkten Sie achten sollten.

Ich würde mich sehr freuen, wenn Sie diesen Artikel lesen und eine lesbare und gut aussehende Codierung verfolgen möchten.

Referenz

Recommended Posts

Mit PEP8 und PEP257 ist es nicht peinlich, Python-Codierung zu zeigen!
Beachten Sie den Python-Codierungsstandard PEP8
Fraktal zum Erstellen und Spielen mit Python
Verwendung ist und == in Python
Ich habe versucht, Deep Learning zu implementieren, das nicht nur mit NumPy tiefgreifend ist
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Python-Protokoll wird nicht mit Docker-Compose ausgegeben
Erstellen einer Umgebung zur Einhaltung des Python-Codierungsstandards (PEP8) mit Eclipse + PyDev
Was vergleichst du mit Python und ==?
[Python] Erwähnen Sie mit der Slack-API mehrere Personen
Verwenden Sie Ruby und Python, um die Wahrscheinlichkeit zu ermitteln, dass eine Karte mit einer natürlichen Zahl von 1 bis 100 ein Vielfaches von 3 und kein Vielfaches von 5 ist.
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
Ich möchte die Optimierung mit Python und CPlex behandeln
Beachten Sie, dass das Schreiben mit Ruby so ist wie das Schreiben mit Python
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Es ist nicht einfach, Python zu schreiben, es ist einfach, numpy und scipy zu schreiben
[Python] tkinter Code, der wahrscheinlich wiederverwendet wird
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
[Python] Pandas Code, der wahrscheinlich wiederverwendet wird
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können
[Python] Was ist ein Tupel? Erklärt, wie man es benutzt und wie man es benutzt, ohne zu tippen.
[VLC] Wie man mit dem Problem umgeht, dass es während der Wiedergabe nicht im Vordergrund steht
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Immerhin ist es falsch, mit Python-Subprozess zu katzen.
So testen Sie, ob die Ausnahme in Python unittest ausgelöst wird
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Generieren Sie mit apg ein leicht zu merkendes Passwort
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Tipps zum Codieren kurz und einfach in Python zu lesen
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich möchte ausgeben, während der Wert des Typs (z. B. datetime) konvertiert wird, der bei der Ausgabe von json mit Python nicht unterstützt wird
Die Geschichte, den privaten Schlüssel mit chmod auf 600 zu setzen
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Zusammenfassung der Module, die die Installation von WebDriver mit Python automatisieren und unterstützen
Mir wurde gesagt, dass ich XML_SetHashSalt nicht finden konnte, als ich versuchte, pip mit Python zu verwenden.
So gehen Sie mit dem Problem um, dass das aktuelle Verzeichnis verschoben wird, wenn Python von Atom ausgeführt wird
[Python] Was ist Pip? Erläutern Sie die Befehlsliste und deren Verwendung anhand aktueller Beispiele
Ich war überrascht, wie man Objekte mit Python speichert, was schlank und sehr energiesparend ist.
NameError: Der globale Name'dot_parser 'ist nicht definiert und was ist zu tun, wenn er in Python angezeigt wird?
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python-Runde ist nicht streng rund
Python und Hardware-Verwenden von RS232C mit Python-
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3