Ein Memorandum für sich selbst, das leicht zu vergessen ist.
#Python schnellste Grammatik
#Referenz
#Jedermanns Python 3rd Edition
# [python]Großer Dank zum Jahresende! Einführung in 50 Python-Tipps für Anfänger
# http://kwatch.houkagoteatime.net/blog/2013/12/07/python-tips/
#Codierungsspezifikation
# -*- coding: utf-8 -*-
#Code break =;(Semikolon)
#Modulimport
import moduleName
from moduleName import functionName
from math import * # import all functions
from math import e
from math import e as newName
from math import (e, pi) #Bei mehreren Importen in Klammern setzen
##Der Modulname kann mit der Anweisung from weggelassen werden
import math
math.sin(60)
from math import sin
sin(60)
##Moduldatei erstellen
## (Die Skriptdatei kann so wie sie ist als Modul verwendet werden)
# 1. moduleName.Schreiben Sie eine Funktion in py
# 2. import moduleName
#Ich möchte eine Linie in der Mitte einer Linie brechen: Backslash am Ende der Linie(\)
import urllib, poplib, sys, calendar, \
datetime, re
#wörtlich
b = 0b1000 #Binärzahl
c = 0x1ff #Hexadezimal
#Bool-Typ
True
False
# Null
None
#Bei Symbolen wird zwischen Groß- und Kleinschreibung unterschieden
python = 100
Python = 200
print(python, Python) #=> 100 200
#Ausgabe auf Standardausgabe(Mit Zeilenumbruch)
print("abc")
print("abc", "def") #Verbinden Sie sich mit einem Raum halber Breite
print("abc", file=sys.stderr) #Standardfehlerausgabe
#Ohne Pausen verketten
for i in range(10):
print("abc", end = ' ') #=> abc abc abc abc abc abc abc abc abc abc
#Holen Sie sich von der Standardeingabe
s = raw_input()
#s = input() # == eval(raw_input())
#Vier Regeln
x += 1
x -= 1
x *= 1
x /= 1
x = 2 ** 10 #Leistung
x = 3 / 2 #Rückgabewert = Gleitkomma
x = 3 // 2 #Rückgabewert = Ganzzahl
x = 5 % 3 #Überschuss
x++ #Diese Schreibweise kann nicht verwendet werden
x-- #Diese Schreibweise kann nicht verwendet werden
#String-Literal
s = "abc'def"
s = 'abc"def'
s = r'\d+\s\n' #rohe Schnur(Behandle so, wie du es siehst)
#String-Manipulation
"abcdef"[0]
"abcdef"[0] = "x" # =>Error
"abcdef"[-1]
"abcdef".title()
"abcdef".lower()
"abcdef".upper()
"abcdef".endswith('f')
"abcdef".startswith('a')
"abcdef".strip()
"abcdef".count('c')
"abcdef" + "ghijkl"
"abcdef" * 3
"abcdef".replace("abc","replaced")
"abcdef".find('x') #=> -1
"abcdef".index('x') #=> ValueError
#Linksbündig, rechtsbündig, mittigbündig
"abcdef".ljust(10," ")
"abcdef".rjust(10," ")
"abcdef".center(10," ")
"abc def".split(" ")
" ".join(["abc","def"])
len("abcdef")
ord("a")
chr(52)
if "a" in "abcdef":
do_something()
#String-Format
"{0} {1} {0}".format("Mika", "Mike")
"{name0} {name1} {name0}".format(name0="Mika", name1="Mike")
"{:.2%}".format(6260 / 12776) #% Notation
#Wertaustausch(Generieren Sie Tupel ohne Klammern)
b, a = a, b
#Hier dokumentieren
lines = '''
auf diese Weise
Mehrere Zeilen
Kann beschrieben werden
Wenn Sie keine Zeilenumbrüche einfügen möchten\
Zurück Zitat am Ende(\)Mit
'''
#Wenn Sie den Einzug behalten möchten()verwenden(Kein Komma)
lines = ("aaaaaa"
"bbbbb"
"ccccc")
#Bedingter Operator(Binäroperator)
return "odd" if odd(x) else "even"
s = "odd" if odd(x) else "even"
#Typkonvertierung
int("123")
hex(1023)
bin(15)
oct(7)
float("1.3")
str(123)
tuple([1,2,3])
list((1,2,3))
#Basisumwandlung
int("0x100", 16)
int("0b1111", 2)
int("0o1777", 8)
#Bitoperation
x | y # or
x & y # and
x ^ y # xor
x << y # left shift
x >> y # right shift
#Funktion
def functionname(x):
"""
Funktionskommentar
"""
do_something()
return result
def moveTo(x,y=0): #Standardwert des Arguments
do_something()
moveTo(x=1, y=20) #Argument Schlüsselwortspezifikation
#Bedingte Verzweigung
if s == "abc": # =nicht==
statementA()
elif s == "def":
statementB()
else:
statementC()
if min <= value <= max: #Sie können Vergleichsoperatoren nacheinander schreiben
do_something()
#Mehrere Rückgabewerte(Aufgabe auspacken)
def foo():
minValue = 1
maxValue = 9
return minValue, maxValue
minValue, maxValue = foo()
(minValue, #Mindestwert
maxValue, #Maximalwert
) = foo()
#Variable Argumente
def foo(a, b, *vals):
print(a, b, vals)
foo(1, 2, 3, 4) # => 1, 2, (3, 4)
#Variables Schlüsselwortargument
def foo(a, b, **args):
print(a, b, args)
foo(1, 2, c=3, d=4) # => 1, 2, {'c': 3, 'd': 4}
#Bedingter Operator:== != > < <= >= not in
#Logischer Operator: und oder xor
#Die switch-Anweisung ist nicht in Python
#Wiederholen (angegebene Anzahl von Malen)
for i in range(6): # i = 0 to 5
do_something()
for i in range(1, 10, 2): #Start,Ende,Schritt i= 1,3,5,7,9
do_something()
#Schleifensteuerung
continue
break
#While-Anweisung
while condition:
do_something()
#In Python gibt es kein Do ~
for loopCounter, item in enumerate(seq): #Mit Schleifenzähler
print(loopCounter, item)
for no, name in zip([1, 2, 3, 4], ['name1', 'name2', 'name3', 'name4']): #Kombiniere zwei Sequenzen
print(no, name)
#Ausnahmebehandlung
try:
if condition:
raise Exception() #Erhöhen Sie absichtlich eine Ausnahme
except Exception as e:
#Fehlerbehandlung
msg = "{1}(err={2})".format(e.errno, e.strerror)
sys.stderr.write(msg)
else:
#Verarbeitung, wenn keine Ausnahme auftritt
finally:
#Nachbearbeitung (immer ausgeführt)
try:
...
except Exception as e:
print e, 'error occurred'
#mit Aussage:Machen Sie die Blockausführung effizient
#Wenn der Prozess fehlschlägt, führen Sie den Block nicht aus
with open(fn) as f: #Wenn dies hier fehlschlägt, wird die Verarbeitung innerhalb des Blocks nicht ausgeführt.
for line in f :
print(line)
##Behandeln Sie Ausnahmen im Traceback-Modul
import traceback
try:
do_something()
except:
traceback.print_exc() #Ausnahme anzeigen
message = traceback.format_exc() #Holen Sie sich als Zeichenfolge
#aufführen
a = [1, 2, 3, 4, 5]
a[0]
a[-1] #Wenn es eine negative Zahl ist, vom Ende
a[5] # => Error
#Slice: Gibt den letzten Index +1 des Elements an, das Sie abrufen möchten
a[1:3] #=> a[1] ~ a[3 - 1]Steh auf=> [2, 3]
a[2:] #=> [3, 4, 5]
a[:3] #=> [1, 2, 3]
a[2:100] #=> [3, 4, 5]
a * 2 #=> [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
a + [6,7] #=> [1, 2, 3, 4, 5, 6, 7]
a[1] = "x" #=> [1, "x", 3, 4, 5, 6, 7]
del a[1] #=> [1, 3, 4, 5, 6, 7]
a.index(1)
if 1 in a:
do_something()
max(a)
min(a)
a.sort() #Seien Sie vorsichtig, da es neu geschrieben wird
a.sort(key=compareFuncName)
a.reverse() #Seien Sie vorsichtig, da es neu geschrieben wird
a.append(6) # add()ist nicht
a.extend([6, 7, 8])
a.remove(1)
a.pop(0)
#Mehrdimensionales Array
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
matrix[0][2]
#Taple
# (Nicht wiederbeschreibbare Liste/Speichereffizienz/Kann als Wörterbuchschlüssel verwendet werden)
t = (1, 2, 3, 4, 5)
#Andere sind die gleichen wie die Liste
#Anwendungsbeispiel
ipmap = {(192.168.0.1):"host1.name.com",
(192.168.0.2):"host2.name.com",}
#Wörterbuch
dict = { "key1":"Tokio", "key2":"Präfektur Osaka" }
dict["key1"]
# .get():Gibt den angegebenen Wert fehlerfrei zurück, auch wenn kein Schlüssel vorhanden ist
for word in lines.split():
wordcount[word] = wordcount.get(word, 0) + 1
dict["key1"] = "Hokkaido"
del dict["key1"]
dict.keys()
dict.values()
dict.items() # key,Gibt eine Liste von Wertetupeln zurück
if "key1" in dict:
do_something()
#Synthetik
dict1.update(dict2) #Überschreiben Sie den gleichen Schlüssel
#einstellen
s = {1, 2, 3, 4}
s2 = {5, 6}
s.remove(7) # KeyError
s.discard(7) # no error
s.add(7)
s |= {7}
if s == s2:
do_something()
if 1 in s:
do_something()
s.union(s2) # s |s2 sum set
s.intersection(s2) # s &s2 gemeinsamer Satz
s.difference(s2) # s -s2 Differenzsatz
s.symmetric_difference(s2) # s ^s2 Symmetrischer Differenzsatz
# map(Konvertieren Sie jedes Element der Sequenz)
map1 = map(str, range(5))
#Nullurteil
if x is (not) None:
do_something()
#Datei lesen
f = open("foo.txt", "r", encoding="utf-8")
s = f.read()
line = f.readline() #1 Zeile
lines = f.readlines() #Alle Zeilen
f.close()
#Datei schreiben
f = open("foo.txt", "w", encoding="utf-8")
f.write(s)
f.writelines(seq) #Beachten Sie, dass keine Zeilenumbrüche hinzugefügt werden
f.close()
#Inklusive Notation (Vervollständigung)
sq = [x ** 2 for x in range(5)]
sq #=> [0, 1, 4, 9, 16]
val = 10
[x for x in range(1,val) if val % x == 0] #=> [1, 2, 5]
filter2 = [x for x in ['cat','dog', 'bird'] if 'cat' in x]
filter2 #=> ['cat']
tz = {"GMT" : "+000", "BST" : "+100",
"EET" : "+200", "JST" : "+900"}
revtz = {value : name for name, value in tz.items()}
revtz #=> {'+200': 'EET', '+100': 'BST', '+000': 'GMT', '+900': 'JST'}
names = ['BOB', 'Burton', 'dave', 'bob']
unames = {x.title() for x in names}
unames #=> {'Bob', 'Dave', 'Burton'}
#Befehl, nichts zu tun
pass
#Gerätetest
from Hoge import * #Testziel
import unittest
class HogeClassTestCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def testFooMethod(self):
self.assertEqual(1, Hoge().foo())
if __name__ == "__main__":
unittest.main()
#Zeitmessung des Codeteils
import timeit
timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
#Kommandozeile abrufen
for arg in sys.argv[1:] # argv[0]=Der Name des Skripts
print(arg)
#Analyse der Befehlszeilenoptionen
from arse import OptionParser
VERSION = '1.01'
def main():
version = '%prog version ' + VERSION
usage = "usage: %prog [options] directories..."
description = 'Delete empty directories.'
parser = OptionParser(version=version, usage=usage,
description=description)
parser.add_option("-f", "--file", dest="filename",
help="read data from FILENAME")
parser.add_option("-v", "--verbose",
action="store_true", dest="verbose")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print "reading %s..." % options.filename
if __name__ == "__main__":
main()
#Iterator (externer Iterator)
# (Alle integrierten Objekte können in Iteratoren konvertiert werden)
# (Es ist mühsam, eine Klasse zu definieren, um sie zu definieren)
i = iter([1, 2, 3]) #In Iteratorobjekt konvertieren
next(i) #Extrahieren Sie das nächste Element(StopIteration-Ausnahme, wenn das Element nicht mehr vorhanden ist)
for line in open("test.txt"): #Verarbeiten Sie jede Zeile der Datei
print(line, end=" ")
#Generator (interner Generator)
# (Definieren Sie iteratorähnliche Features mithilfe von Funktionen)
#Verwenden Sie die Yield-Anweisung
def get_primes(x=2):
while True:
for i in range(2, x):
if x % i == 0:
break
else:
yield x
x += 1
i = get_primes()
for c in range(10):
print(next(i))
#Erzeugung durch Generatorformel
gen = (ord(s) for s in 'Python')
next(gen)
for code in (ord(s) for s in 'Python'):
print(code)
#Gerätetest
#TODO:Schreiben Sie später
#Lambda-Stil
lambda x: x * 10
#Block, der nur ausgeführt werden soll, wenn er in main ausgeführt wird
# (Nicht aus anderen Skripten importiert)
if __name__ == '__main__':
do_something()
#Klassendefinition und Instanziierung
class Person(SuperClassName): #Der Klassenname ist in Großbuchstaben
def __init__(self, name, age): #Initialisieren(1. Argument selbst erforderlich)
self.name, self.age = name, age
self.address = None
bob = Person('Bob', 15)
print bob.name
bob.address = 'USA'
##Klassenvererbung (Mehrfachvererbung möglich)
class Person(SuperClassName):
def __init__(self, width):
super().__init__() #Der Aufruf der übergeordneten Klasse ist super()
self.width = width
#Einschränkungen beim Hinzufügen von Attributen (Instanzvariablen)
class Klass:
__slot__ = ['width', 'height'] #Hier nicht geschriebene Attribute können nicht hinzugefügt werden
def __init__(self):
self.width = 0
self.height = 0
i = Klass()
i.width = 1
i.c = 0 # AttributeError
#Ausblenden (Einkapseln) von Methoden und Attributen Fügen Sie _ am Anfang des Namens hinzu
self._size #Von außerhalb der Klasse nicht zugänglich
self.__size #Von außerhalb der Klasse nicht zugänglich
## Setter / Getter(Spezielle Methode zum Ändern oder Referenzieren von Daten)
##Eigentum(Setter /Funktion zur einfachen Definition von Getter)
##Verhindern Sie das Umschreiben von Attributen außerhalb der Klasse
class Prop(object):
def __init__(self):
#Der intern verwendete Name unterscheidet sich vom Eigenschaftsnamen x(Verhinderung von Endlosschleifen)
self.__x = 0
def getx(self): # Getter
return self.__x
def setx(self, x): # Setter
self.__x = x
#Getter für Eigentum x,Setter einstellen
x = property(getx, setx)
i = Prop()
i.x = 0
##Bediener-Aura-Fahrt(Neudefinition)
__add__(self, other) # + (self + other)
__sub__(self, other) # -
__mul__(self, other) # *
__truediv__(self, other) # /
__floordiv__(self, other) # //
__iadd__(self, other) # +=
__isub__(self, other) # -=
__imul__(self, other) # *=
__itruediv__(self, other) # /=
__ifloordiv__(self, other) # //=
__or__(self, other) # | (or)
__and__(self, other) # & (and)
##Vergleich Betreiber Aura Fahrt
## equal, not equal, lesser than, greater than, ...
__eq__(self, other) # ==
__ne__(self, other) # !=
__lt__(self, other) # < (self < other)
__gt__(self, other) # >
__le__(self, other) # <=
__ge__(self, other) # >=
##Typkonvertierungsüberschreibung
__int__(self) # int()
__bytes__(self)
__float__(self)
__str__(self)
__repr__(self) #In druckbare Zeichenkettendarstellung konvertieren
__format__(self, form_spec) # format()Format neu definieren in
##Spezielle Methode für den Containertyp
__len__(self) # len()
__getitem__(self, key) # obj[key]
__setitem__(self, key, value) # obj[key] = value
__delitem__(self, key) # del obj[key]
__iter__(self) # iter() :Gibt ein Iteratorobjekt zurück
# (Innerhalb__next_()Müssen eine Methode namens definiert werden)
__getattr__(self, attributeName) #Existiert nicht im Objekt
#Wird aufgerufen, wenn auf ein Attribut verwiesen wird
#Wenn Sie möchten, dass das Attribut nicht vorhanden ist
# raise AttributeError
__getattrubute__(self, attributeName) #Bedingungslos angerufen__getattr__
__setattr__(self, attributeName, value) #Wird beim Zuweisen aufgerufen
__call__(self[, args...]) #Dem Namen des Objekts folgen Klammern
#Wird aufgerufen, wenn es als Funktion aufgerufen wird
__del__(self) #Zerstörer
__hash__(self) # hash()Gibt den Hashwert als Ganzzahl zurück
##Objekttypbestimmung
isinstance(var, type) #Typurteil(ype= str, int, float, ...)
##Attribute abrufen (einschließlich Methoden)
s = "abcde"
s.find("cd")
getattr(s, "find")("cd") # find()Rufen Sie die Methode auf
#Standardbibliothek
##Daten vom Webserver abrufen
from urllib import request
src = request.urlopen('http://www.python.org/').read()
from urllib import request, parse
url = 'http://www.python.org/somefile.zip'
filename = parse.urlparse(url)[2].split('/')[-1]
request.urlretrieve(url, filename)
##Bestelltes Wörterbuch
from collections import OrderedDict
od = OrderedDict()
##Wörterbuch mit Standardpreis
from collections import defaultdict
animals = [('Katze', 'Haupt Kuhn'),
('Katze', 'Abyssian'),
('Hund', 'Mops'),
('Hund', 'Sibirischer Husky'),
('Hund', 'Bulldogge') ]
dd = defaultdict(list) #Ein Wörterbuch mit einer leeren Liste als Anfangswert
for k, v in animals :
dd[k].append(v)
dd # => defaultdict(<class 'list'>, {'Katze': ['Haupt Kuhn', 'Abyssian'], 'Hund': ['Mops', 'Sibirischer Husky', 'Bulldogge']})
##Unterstützung beim Hinzufügen von Elementen zu einer sortierten Liste
import bisect
##Behandeln Sie Datum und Uhrzeit
import datetime
datetime.date.today() #heute
datetime.datetime.now() #Aktuelles Datum und Uhrzeit
datetime.datetime(2014, 3, 2, 16, 32, 00)
datetime.time(16, 32, 00)
datetime.date(2014, 3, 2)
d = datetime.date(2014, 3, 2)
d.year #2014
d.month # 3
d.day # 2
d.weekday() # 6:Täglicher tag
d.strftime('%Y/%m/%d %H:%M:%S') # '2014/03/02 00:00:00'
d = datetime.strptime('2014/03/02 00:00:00', '%Y/%m/%d %H:%M:%S')
###Datums- und Zeitunterschied(Vergleich und Multiplikation / Division sind ebenfalls möglich)
delta = datetime.timedelta(days=5)
d1 = datetime.date(2014, 2, 6)
d2 = d1 + delta
print(d2) # 2014-02-11
d2 = datetime.date(2014, 3, 2)
d1 = datetime.date(2014, 2, 6)
d2 = datetime.date(2014, 3, 2)
delta = d2 - d1
print(delta) # 24 days, 0:00:00
##Informieren Sie sich über den Kalender
import calendar
###Tag und Anzahl der Tage im angegebenen Jahr und Monat
(days, first_weekday) = calendar.monthrange(2014, 2)
print(days, first_weekday) #5 28
calendar.month(2014, 2) #Ausgabekalender
##Reguläre Ausdrücke
import re
re.findall(r'[abcde]', 'abcdefg') # ['a', 'b', 'c', 'd', 'e']
re.split(r',', 'ab,cde,fg') # ['ab', 'cde', 'fg']
re.sub(r'a', 'b', 'abcde') # 'bbcde'
match = re.search(r'a', 'abcdea')
print(match)
match = re.match(r'a', 'abcdea')
print(match)
for match in re.finditer(r'[a-z]+', 'This is a pen.'):
print(match.group(0), end =' ') # his is a pen
s = 'abcd,efgh,ijkl'
r = re.compile(r'[abcde]', re.IGNORECASE | re.MULTILINE | re.DOTALL)
r.findall(s)
##Systemparameter abrufen und bedienen
import sys
sys.argv[0] #Das laufende Skript selbst
sys.argv[1:] #Befehlszeilenparameter
sys.exit(0)
sys.getdefaultencoding()
##Erfassen und betreiben Sie betriebssystemabhängige Informationen wie Dateisysteme und Prozesse
import os
os.getenv(key, default=None)
os.chdir(path)
os.getcwd()
os.remove(path)
os.rename(src, dest)
os.mkdir(path, mode)
os.mkdirs(path, mode) #Erstellen Sie unterwegs einen Pfad
os.rmdir(path)
os.removedirs(path) #In der Mitte löschen
os.path.exists(path)
os.path.getsize(path)
os.path.isfile(path)
os.path.isdir(path)
os.path.join(path, path2, ...)
dirname, filename = os.path.split(path)
path = r'c:\users\default\desktop.ini'
os.path.dirname(path) #Verzeichnisname
os.path.basename(path) #Dateiname
path_without_ext, ext = os.path.splitext(path) #Erweiterung
##Mathematikmodul
import math
math.pi
mati.sqrt(2)
mati.sin(60)
mati.cos(60)
mati.tan(60)
##Zufallszahl
import random
random.seed(value) #Zufälliger Samen
x = random.random() # 0 <= x <= 1
y = random.randint(1, 10) #Ganzzahl von 1 bis 10
###Gehen Sie durch die Hierarchie
for dirpath, dirnames, filenames in os.walk(path, topdown=True, oneerror=None):
do_something()
###Prozess/Ausführung eines externen Befehls
exit_status = os.system(command) #Führen Sie den Prozess aus und warten Sie, bis er abgeschlossen ist(Gibt den Endcode zurück)
os.startfile(path) #Windows-Startbefehl
import commands
stdout_text = commands.getoutput(command) #Führen Sie den Prozess aus und warten Sie, bis er abgeschlossen ist(Gibt die Standardausgabe zurück)
IPython-Installation
>pip install ipython
Starten Sie IPython
>ipython
Starten Sie IPython Notebook
>ipython notebook --inline
Recommended Posts