(Python3) Nein. OO (Verwenden Sie die Standardbibliothek?): 5 Shader

Schattenfunktionen

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.

Lass uns einen Ausflug machen!

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.

Bonus: IPython

Ü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.

schließlich

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.

Recommended Posts

(Python3) Nein. OO (Verwenden Sie die Standardbibliothek?): 5 Shader
Informationen zu der von Ihnen verwendeten Entwicklungsumgebung
Der Aufzählungstyp, der aus Python 3.4 in die Standardbibliothek eingeht, ist weiterhin praktisch
Aggregieren Sie die Testergebnisse mithilfe der QualityForward Python-Bibliothek
Überprüfen Sie den Typ der von Ihnen verwendeten Variablen
Was verwenden Sie beim Testen mit Python?
Verwenden Sie die Such-API der National Parliament Library in Python
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
So debuggen Sie eine Standard-Python-Bibliothek in Visual Studio
Wenn Sie der Meinung sind, dass die Person, die Sie mit pip eingegeben haben, nicht funktioniert → Verwenden Sie python3 zufällig?
Wenn Sie mehrere Versionen derselben Python-Bibliothek verwenden möchten (virtuelle Umgebung mit venv)
pathlib Benutzt du es alle?
Tokenize mit der Hugging Face-Bibliothek
[Python] Passen Sie den Standard für die Farbkarte an
Extrahieren Sie die Targz-Datei mit Python
Versuchen Sie es mit dem Python Cmd-Modul
Überprüfen Sie den Dateinamen, wenn Sie durch Python-Import nicht informiert werden
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Hinter dem Flyer: Docker mit Python verwenden
Arbeiten mit OpenStack mit dem Python SDK
Fassen wir den Python-Codierungsstandard PEP8 (1) zusammen.
Was ist "Mahjong" in der Python-Bibliothek? ??
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Python-Standardbibliothek: zweite Hälfte (Python-Lernnotiz ⑨)
Ab Python 3.4 wird pip zum Standardinstallationsprogramm! ??
python setup.py testet den Code mit Multiprocess
Python-Standardbibliothek: Erste Hälfte (Python-Lernnotiz ⑧)
Python open und io.open sind gleich
Holen Sie sich die Größe einer Bilddatei im Web (Python3, keine zusätzliche Bibliothek erforderlich)
So erhalten Sie den Notebook-Namen, den Sie derzeit in Google Colab verwenden
Ich habe versucht, die Python-Bibliothek "pykakasi" zu verwenden, die Kanji in Romaji konvertieren kann.
Sie können Python mithilfe der Bibliothek in eine AWS Lambda-Funktion verwandeln
Es gibt Zeiten, in denen Sie die if-Anweisung mit max · min verkürzen können