Enumeration

Zuvor haben wir es so gemacht:

i = 0
for item in iterable:
    print i, item
    i += 1

Jetzt machen wir es so:

for i, item in enumerate(iterable):
    print i, item

Die Funktion enumerate kann auch einen zweiten Parameter akzeptieren, und zwar so:

>>> list(enumerate('abc')) 
[(0, 'a'), (1, 'b'), (2, 'c')] 
 
>>> list(enumerate('abc', 1)) 
[(1, 'a'), (2, 'b'), (3, 'c')]

Dictionary-/Set-Comprehension

Du kennst vielleicht Listen-Comprehension, aber möglicherweise nicht Dictionary-/Set-Comprehension. Sie sind einfach, leicht zu verwenden und effizient. Wie im folgenden Beispiel:

my_dict = {i: i * i for i in xrange(100)} 
my_set = {i * 15 for i in xrange(100)}
 
# There is only a difference of ':' in both
 
# 两者的区别在于字典推导中有冒号

Gleitkommadivision erzwingen

Wenn wir eine ganze Zahl dividieren, liefert Python 2 (Anmerkung des Herausgebers: Ich habe hier die Versionsnummer hinzugefügt), selbst wenn das Ergebnis eine Gleitkommazahl ist, uns trotzdem eine ganze Zahl. Um dieses Problem zu vermeiden, müssen wir Folgendes tun:

result = 1.0/2

Aber jetzt gibt es einen anderen Weg, dieses Problem zu lösen, und mir war vorher nicht einmal bewusst, dass eine solche Methode existiert. Du kannst Folgendes tun:

from __future__ import division 
result = 1/2
# print(result)
# 0.5

Siehst du, jetzt musst du nicht ".0" an die Daten anhängen, um die genaue Antwort zu erhalten. Beachte, dass dieser Trick nur in Python 2 funktioniert. In Python 3 musst du den Import nicht durchführen, da er standardmäßig bereits importiert ist.

Einfacher Server

Möchtest du schnell und bequem Dateien in einem Verzeichnis teilen? Du kannst es so machen:

# Python2
python -m SimpleHTTPServer

# Python 3
python3 -m http.server

Dadurch wird ein Server gestartet.

Auswerten von Python-Ausdrücken

Wir alle kennen die Funktion eval, aber kennen wir die Funktion literal_eval? Vielleicht wissen es viele nicht. Du kannst diese Operation verwenden:

import ast 
my_list = ast.literal_eval(expr)

um die folgende Operation zu ersetzen:

expr = "[1, 2, 3]"
my_list = eval(expr)

Ich glaube, diese Form sehen die meisten zum ersten Mal, aber tatsächlich gibt es sie in Python schon seit Langem.

Skript-Profiling

Sie können Skripte ganz einfach profilieren, indem Sie den folgenden Code ausführen:

python -m cProfile my_script.py

Objekt-Introspektion

In Python können Sie Objekte mit der Funktion dir() inspizieren. Wie im folgenden Beispiel:

>>> foo = [1, 2, 3, 4]
>>> dir(foo) 
['__add__', '__class__', '__contains__', 
'__delattr__', '__delitem__', '__delslice__', ... , 
'extend', 'index', 'insert', 'pop', 'remove', 
'reverse', 'sort']

Debuggen von Skripten

Sie können ganz einfach Haltepunkte in Ihrem Skript über das pdb-Modul setzen. Wie im folgenden Beispiel:

import pdb
pdb.set_trace()

Sie können pdb.set_trace() überall in Ihrem Skript hinzufügen, und diese Funktion setzt an dieser Stelle einen Haltepunkt.

Vereinfachung von if-Anweisungen

Wenn Sie mehrere Werte prüfen müssen, können Sie die folgende Methode verwenden:

if n in [1,4,5,6]:

um die folgende Vorgehensweise zu ersetzen:

if n==1 or n==4 or n==5 or n==6:

Umkehren von Zeichenketten/Sequenzen

Mit der folgenden Methode können Sie eine Sequenz schnell umkehren:

>>> a = [1,2,3,4]
>>> a[::-1]
[4, 3, 2, 1]
 
# This creates a new reversed list. 
# If you want to reverse a list in place you can do:
 
a.reverse()

Diese Methode funktioniert auch zum Umkehren von Zeichenketten:

>>> foo = "yasoob"
>>> foo[::-1]
'boosay'

Schönformatierung

Sie können Wörterbücher und Sequenzen auf folgende Weise übersichtlich ausgeben:

from pprint import pprint 
pprint(my_dict)

Diese Weise ist effizienter für das Ausgeben von Wörterbüchern. Wenn Sie außerdem ein JSON-Dokument aus einer Datei übersichtlich ausgeben möchten, können Sie die folgende Methode verwenden:

cat file.json | python -m json.tool

Ternärer Operator

Der ternäre Operator ist eine Kurzform für if-else-Anweisungen, auch bekannt als bedingte Ausdrücke. Hier sind einige Beispiele zu Ihrer Orientierung; sie können Ihren Code kompakter und eleganter machen.

[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y