Python-Schnellstart

Wenn ich nach langer Zeit versuche, es zu benutzen, vergesse ich verschiedene Dinge, also habe ich ein Memo wie Bootcamp geschrieben. Unten finden Sie ein Beispiel für die Verwendung unter Ubuntu. Außerdem ist es Python 2-System, daher weiß ich es nicht.

Vorbereitung

Bereiten Sie zunächst Tools für die Installation verschiedener Python-Bibliotheken vor.

easy_install


$ sudo apt-get install python-setuptools

pip


$ sudo apt-get install python-pip

Wenn Sie eine Bibliothek benötigen, fügen Sie diese mit dem Befehl pip hinzu. (Beispiel: feedparser)

(Beispiel)


$ sudo pip install feedparser

Wenn über einen Proxy.

(Beispiel)


$ sudo pip install feedparser --proxy proxy.yourdomain.xx:8080

Lauf

Ausführen einer Datei, die ein Skript beschreibt (z. B. my_python.py).

$ python my_python.py

Codierungsstil

Sie können allgemeine Regeln für Projekte erstellen, die Verknüpfung muss jedoch PEP8 entsprechen.

Es gibt auch einen Google Python Style Guide.

Wenn Sie sich schnell daran erinnern möchten, wie man es benutzt, reicht der Inhalt dieser Seite aus. Wenn Sie jedoch ernsthaft mit dem Programmieren beginnen möchten, ist es besser, die obigen Regeln zu lesen. (Wie bei der Notation können verschiedene Techniken hilfreich sein)

Nachfolgend sind nur die wichtigsten Punkte aufgeführt.

Einzug

Mit 4 Feldern. (Verwenden Sie keine Tabulatoren)

Leer

Setzen Sie keine Leerzeichen in Klammern, eckige Klammern und gewellte Klammern.

# Yes:
spam(ham[1], {eggs: 2}, [])
# No:
spam( ham[ 1 ], { eggs: 2 }, [ ] ) 

Setzen Sie kein Leerzeichen vor das Komma, das Semikolon oder den Doppelpunkt. Fügen Sie nach dem Komma, dem Semikolon und dem Doppelpunkt ein anderes Leerzeichen als das Zeilenende ein.

# Yes:
if x == 4:
    print x, y
x, y = y, x
# No:
if x == 4 :
    print x , y
x , y = y , x

Fügen Sie vor dem Öffnen der Argumente, des Arrays, der Klammern am Anfang des Slice und der eckigen Klammer kein Leerzeichen ein.

# Yes:
spam(1)
dict['key'] = list[index]
# No:
spam (1)
dict ['key'] = list [index]

Begriffsoperatoren wie Zuweisung (=), Vergleich (==, <,>,! =, <>, <=,> =, In, nicht in, ist, ist nicht), Bewertung (und oder oder nicht) Setzen Sie auf beiden Seiten ein Leerzeichen. Die Leerzeichen auf beiden Seiten des arithmetischen Operators sind eine persönliche Beurteilung, setzen jedoch Leerzeichen auf beiden Seiten des Begriffsoperators.

# Yes:
x == 1
# No:
x<1

Fügen Sie für Schlüsselwortwerte oder Anfangswerte keine Leerzeichen auf beiden Seiten des Symbols "=" ein.

# Yes:
def complex(real, imag=0.0): return magic(r=real, i=imag)
# No:
def complex(real, imag = 0.0): return magic(r = real, i = imag)

Fügen Sie keine Leerzeichen ein, um aufeinanderfolgende Linien vertikal auszurichten, da dies die Wartbarkeit verringert. (:, #, = usw.):

# Yes:
foo = 1000  # comment
long_name = 2  # comment that should not be aligned

dictionary = {
    "foo": 1,
    "long_name": 2,
    }
# No:
foo       = 1000  # comment
long_name = 2     # comment that should not be aligned

dictionary = {
    "foo"      : 1,
    "long_name": 2,

Benennung

Art intern Extern
Paket lower_with_under
Modul lower_with_under _lower_with_under
Klasse CapWords _CapWords
Ausnahme CapWords
Funktion lower_with_under() _lower_with_under()
global/Klassenkonstante CAPS_WITH_UNDER _CAPS_WITH_UNDER
global/Klassenvariable lower_with_under _lower_with_under
Instanzvariable lower_with_under _lower_with_under (protected) or __lower_with_under (private)
Methodenname lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private)
Funktion/Methodenparameter lower_with_under
Lokale Variablen lower_with_under

Codierung

Hello World

print 'Hello World'

Umgang mit Codeblöcken

Super Grundlagen von Python. Block mit Einzug anstelle von {{}.

Stile wie C-Sprache


if (cond) {
    ...
}
else {
    ...
}

Python-Stil


if cond:
    ...
else:
    ...

Format der Druckanweisung

Die Formatausgabe mit "% d" oder "% s" ist möglich.

ans = 100
print 'answer is %d' % ans

Wenn Sie mehrere Variablen behandeln, schließen Sie sie in () ein

count = 1
line = 'hogehoge'
print '%d: %s' % (count, line)

Behandlung von Zeilenumbrüchen in Druckanweisungen

Die print-Anweisung wird automatisch unterbrochen, auch wenn Sie am Ende kein \ n hinzufügen.

print 'My name is '
print 'John' #Ausgabe mit Zeilenumbrüchen

Um Zeilenumbrüche zu vermeiden, fügen Sie am Ende des Zeichenliterals , hinzu. Befestigen Sie es außerhalb des Literals, nicht innerhalb.

print 'My name is ',  # ,Anziehen
print 'John' # My name is John.

Kommentartext

Der Kommentartext steht nach #

# comment!

var = 10 # initial value

Es gibt keine auskommentierte Notation, die mehrere Zeilen umfasst. Es kann durch die Zeichenfolgen-Notation "" ersetzt werden. (Diese Beschreibungen werden beim Kompilieren ungültig.)

'''
xxxx
'''
class MyClass:
    pass

Pause Pause in der Mitte

Im Gegensatz zu Java usw. ist ; am Ende der Zeile nicht erforderlich. Stattdessen können Sie eine Zeile in einer Zeile nicht einfach unterbrechen.

NG


# NG
msg = 'I am not in Japan now.'
    + 'But I have been there.'

Sie können eine Zeile in der Mitte durchbrechen, indem Sie am Ende der Zeile \ hinzufügen.

OK


# OK
msg = 'I am not in Japan now.' \
    + 'But I have been there.'

Sie können eine Zeile im Satz von "()" oder "[]" unterbrechen. Außerdem kann die Einrückung nach dem Zeilenumbruch frei sein.

OK


my_method('My', 'Name',
    'Is', 'Mike', 'Davis', '.')

def func():
    v = [1, 2, 3,
4, 5, 6] #Grammatisch OK,Vermeiden Sie es, weil es schwer zu sehen ist.

Variable

Der Typ muss nicht in der Variablendeklaration angegeben werden. Numerische Werte, Zeichenfolgen und Arrays sind Objekte.

val = 10
msg = 'foo'
ary = [1, 2, 3]
c = MyClass()

Array-Definition

Eine Form, die oft in anderen Sprachen gesehen wird. Zwischen den Elementen kann ein Zeilenumbruch eingefügt werden.

list = [
     "Ichiro",
     "Jiro",
     "Saburo"]

Logische Operation

Sie können nicht "|" oder "&" verwenden. Verwenden Sie stattdessen "und" und "oder".

if a == 1 and b == 2:
    # do something

Umgang mit Booleschen Werten

Verwenden Sie "True", "False".

if True:
    print "Always True"

Behandlung von Null

Verwenden Sie "Keine" anstelle von "Null".

if value is None:
    # do something

Binäroperator

Beachten Sie, dass sich die Notation von Java unterscheidet.

data = 100
value = 'even' if data % == 0 else 'odd'

Funktionsdefinition

Verwenden Sie "def". In Python sind Funktionen auch Objekte.

def func(value):
     return value*2

Wie schreibe ich Hauptprozess

Das Schreiben wie folgt erleichtert das Verständnis des Hauptprozesses.

def main():
    # do something
    ...

if __name__ == "__main__":
    main()

Laufzeitparameter verarbeiten

Verwenden Sie das sys-Modul. argvs [0] ist der Skriptname.

import sys

argvs = sys.argv
argc = len(argvs)
if (argc != 2):
     print 'Usage: %s <file>' % argvs[0]
     quit()

print 'param: %s' % argvs[1]

ist und ==

is ist Identität (== in Java) == ist Gleichheit (equals () in Java) Im Gegensatz zu Java sind alle Zahlen Objekte.

Bei dieser Nummer ist es etwas verwirrend.

a = 1
b = 1
if a is b:
    print "a is b"
if a == b:
    print "a == b"

Intuitiv sollte "a == b" nicht "a ist b" sein. Wenn das obige ausgeführt wird, wird auch "a ist b" ausgegeben.

"a is b"
"a == b"

Dies scheint auf die Wiederverwendung unveränderlicher Daten und die Effektivität des Caching zurückzuführen zu sein. Übrigens, wahrscheinlich weil der Compiler intelligent ist, wird er auch in den folgenden Fällen "a ist b" sein. (Natürlich a == b)

a = 1 + 3
b = 2 + 2
if a is b:
    print "a is b"

Im Fall einer Zeichenfolge wird True mit "is" zurückgegeben, wenn es wie ein numerischer Wert wiederverwendet wird. Beachten Sie jedoch, dass "is" in einigen Fällen "False" ist, wenn es dynamisch generiert wird.

x = "X"

a = "XY"
b = x + "Y"

if a == b:
    print "a == b"
if a is b:
    print "a is b"

output


a == b

Übrigens können Sie die Funktion id () verwenden, um die Adresse des Objekts abzurufen. Wenn sich is anders verhält als erwartet, verwenden Sie es zum Debuggen.

a = "foo"
print "a at 0x%x" % id(a)

if-else-Syntax

Ich vergesse das oft, aber ich benutze "elif".

if i % 15 == 0:
    print 'FizzBuzz'
elif i % 3 == 0:
    print 'Fizz'
elif i % 5 == 0:
    print 'Buzz'
else:
    print i

for / while-Anweisung

Es ist bequem, range () zu verwenden. Das zweite Argument von "range ()" ist der Maximalwert, aber dieser Wert ist ** nicht enthalten **.

for i in range(0, 5):
    print 'id = %d' % i

output


id = 0
id = 1
id = 2
id = 3
id = 4

Beim Start von der Mitte.

for i in range(2, 3):
    print 'id = %d' % i

output


id = 2

Sie können den Schritt mit dem dritten Argument angeben. Auch in diesem Fall wird der Maximalwert des zweiten Arguments nicht überschritten.

for i in range(0, 10, 2):
    print 'id = %d' % i

output


id = 0
id = 2
id = 4
id = 6
id = 8

Sie können auch ein Array angeben.

for i in [0, 2, 3]:
    print 'id = %d' % i
for c in ['red', 'green', 'blue']:
    print 'color = %s' % c

Sie können auch ein Teilarray angeben.

colors = ['red', 'green', 'blue']
for c in colors[1:]:
    print 'color = %s' % c

output


color = green
color = blue

Es gibt eine Syntax für-else. Die else-Klausel wird ausgeführt, wenn die Schleifenverarbeitung von for abgeschlossen ist.

for i in range(0, 3):
    print 'i = %d' % i
else:
    print 'done'

output


i = 0
i = 1
i = 2
done

Wenn Sie in der Mitte brechen, wird die else-Klausel nicht ausgeführt.

for i in range(0, 3):
    print 'i = %d' % i
    if i == 1:
        break
else:
    print 'done' #Nicht ausgeführt

while-Anweisung. Sie können hier auch die else-Klausel verwenden.

i = 5
while 0 < i:
    print 'id = %d' % i
    i -= 1
else:
    print 'done'

Zeichenliteral einschließlich Zeilenumbrüche (hier Dokumentstil)

In '' ' einschließen.

val = '''this is a pen.
but it's not my favorite color.
I love red.
'''

Wenn Sie den Code einrücken und schreiben möchten, gibt es die folgenden Beschreibungsmethoden.

import textwrap

print textwrap.dedent('''\
AIUEO
Kakikukeko
SA Shi Su Se So.''')

Try-außer-Syntax

Sie können Ausnahmen mit der Try-Except-finally-Syntax behandeln, ähnlich der Java-Try-Catch-finally-Syntax. In Python kann auch die else-Klausel angegeben werden, die ausgeführt wird, wenn der Prozess abgeschlossen ist, ohne dass beim Versuch eine Ausnahme auftritt.

try:
    val = int("123") # no exception
    print 'val = %d' % val
except ValueError:
    raise
else:
    print '>> else'
finally:
    print '>> finally'

In diesem Fall tritt in der try-Klausel kein Fehler / keine Ausnahme auf, daher lautet die Ausgabe wie folgt.

output


val = 123
>> else
>> finally

Wagen Sie es, einen Fehler in der try-Klausel zu generieren.

try:
    val = int("abc") # ValueError
    print 'val = %d' % val
except ValueError:
    # raise
    pass
else:
    print '>> else'
finally:
    print '>> finally'

In diesem Fall lautet die Ausgabe:

output


>> finally

Zusätzlich können zusätzliche Fehler und Ausnahmen gemeinsam mit "()" angegeben werden.

try:
   ...
except (XXXError, YYYError, ZZZException):
   ...

Einfache Klassendefinition

Es kann wie folgt definiert werden. Mitgliedsvariablen müssen nicht einzeln deklariert werden. Das erste Argument "self" ist immer erforderlich und muss beim Aufruf nicht angegeben werden.

class ClassName:
    def __init__(self, arg1, arg2):
        self.member1 = arg1
        self.member2 = arg2

    def method(self, param1):
        // logic  

Instanziierung-> Anruf.

data = ClassName('nameA', 'nameB')
data.method('param1')

In String konvertieren

Im folgenden Beispiel ist kein Druck möglich.

val = 120
print "val + " val

Sie können es explizit mit "str ()" in einen String konvertieren.

printt "hoge=" + str(123)

In eine Ganzzahl konvertieren

Konvertieren Sie eine Zeichenfolge in eine Ganzzahl.

val = int("23")

Wenn keine Konvertierung möglich ist, tritt "ValueError" auf.

try:
    v = int("abc")
except ValueError:
    print 'ValueError occurs'

Konvertieren Sie Hex-Zeichenfolge in Dezimal-Int

Geben Sie das zweite Argument von int () an.

value10 = int ('0xF6', 16)

Ausführung von Systembefehlen

Verwenden Sie es aus Gründen der Portabilität nicht.

import os
os.system('<command>')

(Beispiel)


os.system('grep TvC -R .')

Empfangen Sie das Ergebnis eines Systembefehls

Sie können das Ergebnis des Systembefehls als Zeichenfolge erhalten. Wenn es kein Ergebnis gibt, wird anscheinend ein leeres Zeichen anstelle von "Keine" zurückgegeben.

Dies ist auch portabel und wird nicht häufig verwendet.

import commands
r = commands.getoutput('<command>')

(Beispiel)


r = commands.getoutput('date')

Nicht unterstützte Notation

switch-Anweisung

Wenn --elif verwendet werden soll.

Inkrementoperator

Numerische Typen können auch Objekte (unveränderlich) sein und nicht als "i ++" oder "--i" geschrieben werden. Verwenden Sie so etwas wie "i + = 1".

Recommended Posts

Python-Schnellstart
Starten Sie Python
Python - Schneller Start der Protokollierung
Starten Sie Python
[Python] Beginne zu lernen
Python
Starten Sie mit Python zu Selen
[Gimp] Starten Sie die Skripterstellung mit Python
Starten / Stoppen von GCE über Python
3 Gründe für die Programmierung Anfänger sollten mit Python beginnen
Arbeiten mit Azure CosmosDB aus Python (Schnellstart)
Kurzreferenztabelle im Python-Datetime-Format
"Python Startbook" Python3-kompatibles Memo
Kafka Python
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Technik
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python-Tipps
Beginn des Schabens
Python-Funktion ①
Python-Grundlagen
Python-Memo
Ufo-> Python (3)
Installieren Sie Python
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Python Jinja2
Japanische Übersetzung des Apache Spark-Dokuments - Schnellstart
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Start / End-Match im regulären Python-Ausdruck
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung
[Python] Sortieren
Hinweis: Python
Python-Grundlagen ③
Python-Protokoll ausgeben
Python-Grundlagen
[Scraping] Python-Scraping
Python-Update (2.6-> 2.7)
Python-Memo