Das Python Advanced Training Camp 2.0 der Geek University ist ein neues Upgrade

Verwenden Sie die Slicing-Operation, um eine trim () -Funktion zu implementieren, um Leerzeichen am Anfang und Ende des Strings zu entfernen, und achten Sie darauf, die strip () -Methode von str nicht aufzurufen. Richtige
Lösung 1:

def trim (s):
while s [: 1] == '':
s = s [1:]
while s [-1:] == '':
s = s [: - 1]
return s
正 解 2 :

def trim (s):
wenn s [: 1] == '':
s = trim (s [1:])
wenn s [-1:] == '':
s = trim (s [: - 1])
Return s ist
leicht, falsche Methode zu schreiben:

def trim (s):
while s [0] == '':
s = s [1:]
while s [-1] == '':
s = s [: - 1]
return s
Erläuterung: Wenn s = ' ', s [0] und s [-1] melden IndexError: Zeichenfolgenindex außerhalb des Bereichs, s [: 1]) und s [-1:] jedoch nicht.

Bitte entwerfen Sie einen Dekorateur, der auf jede Funktion angewendet werden kann, und drucken Sie die Ausführungszeit der Funktion aus.

- - Codierung: utf-8 - -

Importzeit, functools
def metric (fn):
@ functools.wraps (fn)
def wrapper (* args, ** kw):
time0 = time.time ()
ret = fn (* args, ** kw)
time1 = time. time ()
print ('% s wird in% s ms ausgeführt'% (fn. name , time1-time0))
return ret Was ist die Essenz des
Return Wrapper
Decorators? Mit anderen Worten, warum der Dekorateur 2 Ebenen verschachtelter Funktionen schreiben muss, die innere Funktion die Funktion der Dekoration vollständig realisiert hat, warum nicht direkt den Namen der inneren Funktion als Namen des Dekorateurs verwenden?

Antwort: Der Dekorateur soll die ursprüngliche Funktion in eine neue Funktion umwandeln und die Funktion höherer Ordnung der Funktion selbst zurückgeben

Die Einschränkung des Multithreading unter Python und die Art und Weise der Übergabe von Parametern im Multiprozess

Python-Multithreading verfügt über eine globale Interpretersperre. Diese Sperre bedeutet, dass immer nur ein Thread den Interpreter gleichzeitig verwenden kann. Dies bedeutet, dass mehrere Programme mit einer einzigen CPU ausgeführt werden. Jeder verwendet sie nacheinander. Es heißt "Parallelität", nicht "parallel".

Um Daten zwischen mehreren Prozessen auszutauschen, können Sie multiprocessing.Value und multiprocessing.Array verwenden

Der Unterschied zwischen Python-Multithreading und Multiprozess:

Wenn auf der UNIX-Plattform ein Prozess beendet wird, muss der Prozess von seinem übergeordneten Prozess als wait bezeichnet werden. Andernfalls wird der Prozess zu einem Zombie-Prozess (Zombie). Daher ist es erforderlich, die join () -Methode für jedes Process-Objekt aufzurufen (entspricht tatsächlich dem Warten). Für Multithreading gibt es keine solche Notwendigkeit, da es nur einen Prozess gibt.

Mehrere Prozesse sollten die gemeinsame Nutzung von Ressourcen vermeiden. Beim Multithreading können wir Ressourcen problemlos gemeinsam nutzen, z. B. mithilfe globaler Variablen oder durch Übergabe von Parametern. Bei mehreren Prozessen ist das obige Verfahren nicht geeignet, da jeder Prozess seinen eigenen unabhängigen Speicherplatz hat. Zu diesem Zeitpunkt können wir Ressourcen gemeinsam nutzen, indem wir Speicher und Manager gemeinsam nutzen. Dies erhöht jedoch die Komplexität des Programms und verringert die Effizienz des Programms aufgrund der Notwendigkeit einer Synchronisation.

Bitte schreiben Sie einen Teil des Python-Codes, um doppelte Elemente in einer Liste zu löschen

l = [1,1,2,3,4,5,4]
Liste (Menge (l))
[1, 2, 3, 4, 5]
oder
d = {}
für x in meiner Liste:
d [x] = 1
mylist = list (d.keys ())
verwendet die Funktion map (), um die vom Benutzer eingegebenen unregelmäßigen englischen Namen in Großbuchstaben und andere kanonische Namen in Kleinbuchstaben umzuwandeln. Eingabe: ['adam', 'LISA', 'barT'], Ausgabe: ['Adam', 'Lisa', 'Bart']:
def normalize (name):
return name [0] .upper () + name [ 1:]. Lower ()

def normalizeList (Eingabeliste):
Rückgabeliste (Map (normalisieren, Eingabeliste))

Wie verwaltet Python den Speicher?
  http://developer.51cto.com/art/201007/213585.htm
  Python bezieht sich auf einen Speicherpoolmechanismus (Speicherpoolmechanismus), dh den Pymalloc-Mechanismus (malloc: n. Speicher zuweisen), mit dem Anwendungen für kleine Speicherblöcke verwaltet werden Und geben Sie
das Konzept des Speicherpools frei:
  Wenn Sie eine große Anzahl von Objekten erstellen, die wenig Speicher verbrauchen, führen häufige Aufrufe von new / malloc zu einer starken Speicherfragmentierung, was zu einer verringerten Effizienz führt. Das Konzept des Speicherpools besteht darin, im Voraus eine bestimmte Menge im Speicher zu beantragen, und Speicherblöcke gleicher Größe werden als Ersatz reserviert. Wenn ein neuer Speicherbedarf vorliegt, wird der Speicher zuerst diesem Speicher aus dem Speicherpool zugewiesen, und dann wird ein neuer Speicher angewendet, wenn er nicht ausreicht. RAM. Der wichtigste Vorteil davon ist, dass es die Speicherfragmentierung reduzieren und die Effizienz verbessern kann.
Es gibt viele Möglichkeiten, den Speicherpool zu implementieren, und die Leistung und der Anwendungsbereich unterscheiden sich ebenfalls.
Der Speicherverwaltungsmechanismus in
  Python- Pymalloc: Der Speicherverwaltungsmechanismus in Python verfügt über zwei Implementierungssätze, einen für kleine Objekte. Wenn die Größe weniger als 256 Bit beträgt, gilt Pymalloc für den Speicherplatz im Speicherpool, wenn er größer als 256 Bit ist Führt das Verhalten new / malloc direkt aus, um Speicherplatz zu beantragen.
  In Bezug auf die Freigabe des Speichers ruft Python seinen Destruktor auf, wenn der Referenzzähler eines Objekts 0 wird. Während der Destrukturierung wird auch ein Speicherpoolmechanismus verwendet, und der Speicher aus dem Speicherpool wird an den Speicherpool zurückgegeben, um häufige Freigabeaktionen zu vermeiden.

Erklären Sie die und-oder Syntax von Python
http://www.kuqin.com/diveinto_python_document/apihelper_andor.html
ähnelt dem C-Ausdruck bool? A: b, aber bool und a oder b, wenn a falsch ist, sieht es nicht so aus Der C-Ausdruck bool? A: b funktioniert genauso.
Die and-or-Technik sollte in eine Funktion eingekapselt werden:

def select (bool, a, b):
return (bool und [a] oder [b]) [0]
Da [a] eine nicht leere Liste ist, wird sie niemals falsch sein. Selbst wenn a 0 oder '' oder ein anderer falscher Wert ist, ist die Liste [a] wahr, da sie ein Element enthält.

Wie iteriere ich über eine Sequenz in umgekehrter Reihenfolge
für x in umgekehrter Reihenfolge:
… # mache etwas mit x…
Wenn es keine Liste ist, ist die häufigste, aber langsamere Lösung:

für i im Bereich (len (Sequenz) -1, -1, -1):
x = Sequenz [i]

Wie implementiert Python den Singleton-Modus? Wie implementiere ich die anderen 23 Entwurfsmuster in Python?

Wie kopiere ich ein Objekt in Python?
https://www.yuque.com/dangxianyuyudaoniu/kclb/2020
Das Kopiermodul in der Standardbibliothek bietet zwei Methoden zum Implementieren der Kopie. Eine Methode ist copy, die ein Objekt
mit demselben Inhalt wie der Parameter zurückgibt. Verwenden Sie die Deepcopy-Methode, das Objekt Die Attribute in werden ebenfalls kopiert

Was ist der Unterschied zwischen search () und match () in Python?
Die Funktion match () erkennt nur, ob der RE am Anfang der Zeichenfolge übereinstimmt. Search () durchsucht die gesamte Zeichenfolge nach einer Übereinstimmung, dh match () gibt nur zurück, wenn die Übereinstimmung an Position 0 erfolgreich ist, wenn sie nicht am Anfang der Übereinstimmung liegt. , Match () gibt keine zurück

Es gibt zwei Sequenzen a, b, die Größe ist n, die Werte der Sequenzelemente sind beliebige ganze Zahlen und sie sind ungeordnet;
Anforderungen: Durch Austauschen der Elemente in a, b wird [die Summe der Elemente einer Sequenz] und [die Summe der Elemente der Sequenz b] gebildet. ] Ist der kleinste Unterschied.

Berechnen Sie die Summe der Sequenzen a und b,
ermitteln Sie die Hälfte der Differenz zwischen der Summe einer Sequenz und der Summe der Sequenz b und notieren Sie sie als die Hälfte,
ermitteln Sie die Differenz zwischen dem Element max in einer Sequenz mit einer großen Summe und einer Sequenz mit einer kleinen Summe Das Element, das der Hälfte am nächsten liegt, wird als min markiert. Tauschen Sie einfach
max und min aus.
Beschreiben Sie das Konzept der Metaklassen. Hat Python eine Schnittstelle? Was sind die Ähnlichkeiten und Unterschiede zwischen Metaklassen und Java-Schnittstellen?
In Python gibt es keinen Schnittstellentyp, und die Definition der Schnittstellenklasse (abstrakte Klasse) ist nur eine künstliche Bestimmung, die sich im Programmierprozess selbst einschränkt.
Metaklassen sind Vorlagen für Klassen und konzentrieren sich auf die Erstellung von Klassen. Die Schnittstelle soll Ideen liefern und später umsetzen.

Ich denke du magst

Origin blog.csdn.net/weixin_52772147/article/details/112824906
Empfohlen
Rangfolge