Python soll mit einer Batterie gebündelt sein, daher verfügt es über viele integrierte Funktionen und Standardbibliotheken. Andererseits denke ich, dass es viele Funktionen gibt, die zu umfangreich sind, um das Licht der Welt zu erblicken.
Die ursprüngliche Motivation zum Schreiben ist die Druckfunktion. Sie sollte genauer bewertet werden.
Lesen wir einmal Folgendes: Python-Tutorial ebenso gut wie Standard Library Mini Tour Standard Library Mini Tour Teil 2
print Dieses Kind ist sehr berühmt, aber die Argumente können Shader sein.
In Python2 wurde die print-Anweisung von Python3 in die print-Funktion geändert. Ich habe mich gefragt, was dies bedeutet, außer die Abwärtskompatibilität zu beeinträchtigen. Wenn Sie genau hinschauen, hat sie sich zu einer sehr praktischen Funktion entwickelt. T:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
- sep - Sie können ein Trennzeichen festlegen, ähnlich wie bei "Join":
print('a', 'b', 'c', 'd', sep='_')
# '_'.join(['a', 'b', 'c', 'd'])
>>> a_b_c_d
- end - Sie können angeben, was am Ende der Ausgabe eingefügt werden soll.
print('Hello ', end=''); print('World')
>>> Hello World
- file -
Dies ist der bewegendste Punkt. ** Die Dateiausgabe ist mit print
** möglich:
f = open('output.txt', 'w')
print('Hello World', file=f)
Wenn Sie googeln, wird häufig die Verwendung von "write ()" oder "writeline ()" eingeführt, aber von nun an können Sie "print" verwenden!
- flush -
Sie können den Puffer leeren. Das Schreiben einer Datei erfolgt beispielsweise nicht, wenn Sie "print (..., file = f)" ausführen, sondern wenn der Puffer voll ist. Wenn Sie während der Ausführung einen Blick auf die geschriebene Datei werfen möchten, möchten Sie, dass sie sofort ausgegeben wird. In diesem Fall setzen Sie flush
auf True.
** - Matching-Technik - ** Angenommen, Sie möchten die Anzahl der Schleifen auf der Konsole drucken, wenn Sie etwas tun:
for i in range(100):
print('rep = {0}'.format{i})
#So etwas wie das Folgende...
>>> rep = 0
rep = 1
rep = 2
rep = 3
...
Dies ist jedoch eine Verschwendung von Konsolenplatz, da die Ausgabe vertikal ausgerichtet ist. ** Überschreiben wir die Ausgabe: **
for i in range(100):
print('rep = {0}'.format{i}, '\r', end='', flush=True)
#So etwas wie das Folgende...
\ r
ist eine Escape-Sequenz, die die Cursorposition an den Zeilenanfang zurücksetzt. Dadurch wird die Ausgabe überschrieben und in eine Zeile eingefügt. Dies ist praktisch.
pprint
** Pretty-Print, abgekürzt pprint
**. Wie der Name schon sagt, macht es die Ausgabe niedlich. Wahrscheinlich ist die Definition von" niedlich "hier" Ausgabe, die nicht zur Breite der Konsole passt, in mehrere Zeilen unterteilt. Es scheint "Ausgangszustand" zu sein:
from pprint import pprint
pprint('There should be one-- and preferably only one --obvious way to do it.'.split())
>>> ['There',
'should',
'be',
'one--',
'and',
'preferably',
'only',
'one',
'--obvious',
'way',
'to',
'do',
'it.']
Ich weiß nicht, ob es süß ist, aber es kann nützlich sein. Es fühlt sich nicht so vielseitig an wie die Druckfunktion.
shelve
Es ist üblich, das numerische Berechnungsergebnis in einer txt-, csv-Datei usw. zu speichern. Wenn Sie jedoch versuchen, dies mit Python erneut zu lesen, handelt es sich um einen Zeichenfolgentyp. Sie müssen also die Prozedur befolgen, um es in int / float umzuwandeln ... Nein. ** Shelve
kann Objekte in Python so speichern und erweitern, wie sie sind: **
import shelve
zen_string = 'There should be one-- and preferably only one --obvious way to do it.'
zen_list = zen_string.split()
#Erstellen Sie ein neues Helve-Objekt
obj = shelve.open('./test')
#Ersetzen Sie wie dikt Typ
obj['string'], obj['list'] = zen_string, zen_list
#sparen(close)
obj.close()
#Einsatz
obj_restore = shelve.open('./test')
print(list(obj_restore.keys()))
>>> ['string', 'list']
print(obj_restore['string'])
>>> 'There should be one-- and preferably only one --obvious way to do it.'
Dies sollte nützlich sein, wenn Sie in Python leben! Aber ist es vielseitig, weil es nicht mit anderen Sprachen und Tools aufgerufen werden kann?
collections.deque
list ist ein praktischer Container, aber das Hinzufügen / Entfernen anderer Elemente als des Endes ist sehr ineffizient. collection.deque
kann das Anhängen und Popup an beiden Enden mit hoher Geschwindigkeit ausführen:
import numpy as np
from collections import deque
a = np.linspace(0, 1, 100000)
b = deque(a)
# IPython
%timeit -n5 a.pop(0)
>>> 5 loops, best of 3: 35.6 µs per loop
%timeit -n5 b.popleft()
>>> 5 loops, best of 3: 147 ns per loop
** 200 Mal oder mehr ** </ font> ist schnell. Ich denke, es ist wichtig, wenn Sie Python mit Procon verwenden.
Über die Bequemlichkeit von IPython wurde an vielen Stellen gesprochen: Verwendung von IPython
Sie können auf die Hilfe verweisen, indem Sie ?
Nach dem Befehl hinzufügen. Sie können den Shell-Befehl so verwenden, wie er ist, und er ist praktisch, z. B. der Befehl magic.
IPython.embed Stoppen Sie mitten in der Ausführung des Codes und geben Sie IPython ein.
from IPython import embed
tmp = []
for i in range(100):
tmp.append(i)
if i == 50:
# i ==Geben Sie mit IPython bei 50 ein
embed()
# IPython
In [1]: tmp
Out[1]:
[0,
1,
2,
...
50]
# exit()Oder Strg-Wenn ich IPython mit D oder etwas anderem verlasse, wird die Ausführung fortgesetzt
Wenn Sie beispielsweise einen seltsamen Fehler erhalten, können Sie kurz davor "embedded ()" dazwischen setzen und den Inhalt des Objekts überprüfen. Für diejenigen, die das Druck-Debugging beenden möchten, der Debugger jedoch einen hohen Schwellenwert hat ... Ich würde es gerne tun.
Ich habe einige der Dinge aufgelistet, die ich oft benutze und die nicht sehr bekannt sind. Wenn es etwas Gutes gibt, werde ich es hinzufügen. Wenn es etwas Gutes gibt, lass es mich bitte wissen.