Python3
def sample_func_1(text : str) -> str:
add_text = "String hinzugefügt"
return (text + add_text)
def sample_func_2(text : str) -> str:
add_text2 = "String hinzugefügt"
return (text + add_text2)
Python3
func_dict = {
'label_1' : sample_func_1,
'label_2' : sample_func_2
}
Der Wert des Wörterbuchs (* dict ) ist das Funktions- (Methoden-) Objekt selbst. Um eine Funktion (Methode) auszuführen, müssen daher Klammern ("()") hinzugefügt werden, um das Argument zum Wert des Wörterbuchs ( func_dict *) zu erhalten.
Das Ergebnis des Aufrufs der Funktion (Methode) "selbst", die als Wertwert des Wörterbuchs (* dict *) ohne die Klammern ("()") gespeichert ist, ist wie folgt.
Python3
func_dict['label_1']
<function sample_func_1 at 0x100bafb80>
Um die aus dem Wörterbuch aufgerufene Funktion (Methode) mit dem obigen Code auszuführen, muss eine Klammer ("()") eingefügt werden, die das Argument empfängt.
Python3
func_dict['label_1']()
__ Wenn * funct_dict * eine Methode ist, die ein oder mehrere Argumente empfängt, tritt ein Fehler auf, wenn Sie die Funktion aufrufen, ohne Argumente anzugeben. __ __
Die definierte Methode (Funktion) war eine Funktion, die ein Objekt vom Typ * str * als Argument verwendet. Übergeben Sie eine entsprechende Zeichenfolge als Argument und versuchen Sie, die in * func_dict * gespeicherte Methode (Funktion) auszuführen.
Python3
func_dict['label_1']("vxw")
#Ausführungsergebnis
'vxw hat einen String hinzugefügt'
Python3
func_dict
#Ausführungsergebnis
{'label_1': <function sample_func_1 at 0x100bafaf0>, 'label_2': <function get_text_from_ppt at 0x100bafa60>}
func_dict['label_1']
<function sample_func_1 at 0x100bafb80>
type(func_dict['label_1'])
#Ausführungsergebnis
<class 'function'>
type(func_dict['label_1']())
#Ausführungsergebnis
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sample_func_1() missing 1 required positional argument: 'text'
type(func_dict['label_1']("giho"))
#Ausführungsergebnis
<class 'str'>
func_dict['label_1']("giho")
#Ausführungsergebnis
'giho hat eine Zeichenkette hinzugefügt'
returned_value = func_dict['label_1']("giho")
returned_value
#Ausführungsergebnis
'giho hat eine Zeichenkette hinzugefügt'
Mit der diesmal eingeführten Methode ist es möglich, die dem * Schlüssel * entsprechende Funktion (Methode) gemäß dem im Objekt vom Typ Wörterbuch definierten Wert von * Schlüssel * aufzurufen.
Dies ist nützlich, wenn Sie Logik benötigen, um die entsprechende Funktion (Methode) zu wechseln, die in Abhängigkeit von den Bedingungen im Datenverarbeitungsfluss aufgerufen werden soll.
Als grundlegendes Beispiel können Sie sich eine Situation vorstellen, in der eine Funktion (Methode), die die erforderliche Verarbeitung für eine gelesene Datei ausführt, dynamisch ausgewählt, aufgerufen und entsprechend dem Inhalt der Erweiterung der gelesenen Datei ausgeführt wird.
Der Code zum Ausschneiden nur der Textzeichenfolge und zum Abrufen der Daten aus der PDF-Datei, der Word-Datei und der Excel-Datei wird auf der folgenden Webseite vorgestellt.
Python3
def get_text_from_txt(filename : str) -> str:
Lesen Sie die Textdatei, die in dem als Dateiname empfangenen Pfad gespeichert ist, und lesen Sie den Text*str*Verarbeitung zum Erfassen als Objekt und Ausgeben als Rückgabewert
return text
def get_text_from_pdf(filename : str) -> str:
Lesen Sie die PDF-Datei, die im als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
return text
def get_text_from_word(filename : str) -> str:
Lesen Sie die Word-Datei, die in dem als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
return text
def get_text_from_excel(filename : str) -> str:
Lesen Sie die Excel-Datei, die in dem als Dateiname empfangenen Pfad gespeichert ist, extrahieren Sie die Textzeichenfolge und eine*str*Verarbeitung zur Verkettung mit einem Objekt und Ausgabe als Rückgabewert
return text
func_dict = {
'txt' : get_text_from_txt,
'pdf' : get_text_from_pdf,
'word' : get_text_from_word,
'excel' : get_text_from_excel
}
Wenn Sie beim Speichern einer Funktion (Methode) in * Wert * des Wörterbuchs die Funktion in Klammern setzen, tritt der folgende Fehler auf. Wenn Sie versuchen, eine Funktion auszuführen, wird sie interpretiert.
PZython3
func_dict = {
'label_1' : sample_func_1(),
'label_2' : sample_func_2()
}
#Ausführungsergebnis
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: sample_func_1() missing 1 required positional argument: 'text'
Definieren eines Wörterbuchs Im obigen Code können Sie ein Wörterbuch definieren (kein Fehler), indem Sie ein bestimmtes Argument in den Klammern von * sample_func_1 () * angeben.
Die in * Wert * des Wörterbuchs gespeicherte Funktion wird jedoch zu einer Funktion, die nur die Argumente empfangen kann, die beim Definieren des Wörterbuchs empfangen wurden.
__ (Wörterbuchdefinition) __
Python3
func_dict = {
'label_1' : sample_func_1("abc"),
'label_2' : sample_func_2("def")
}
__ (Aufrufen einer Funktion im Wörterbuch) __
Im * func_dict * -Wörterbuch wird die Funktion * sample_func_1 ("abc") , die als * Wert * definiert ist, der * Schlüssel * " label_1 *" entspricht, mit dem angegebenen Argument "abc" ausgeführt. Geschah.
Python3
func_dict['label_1']
#Ausführungsergebnis
'abc String hinzugefügt'
Python3
func_dict['label_1']()
#Ausführungsergebnis
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
Python3
func_dict['label_1']("abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
Python3
unc_dict['label_1']('abc')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
__ Speichern Sie eine Textzeichenfolge in * Val * des Wörterbuchs und rufen Sie die Funktion mit * eval * und * exec * auf. __ __
__ Es ist jedoch nicht elegant, da es die Anzahl der Striche auf der Tastatur erhöht. __ __
Python3
func_dict = {
'label_1' : "sample_func_1({arg})",
'label_2' : "sample_func_2({arg})"
}
Python3
func_dict
#Ausführungsergebnis
{'label_1': 'sample_func_1({arg})', 'label_2': 'sample_func_2({arg})'}
func_dict['label_1']
#Ausführungsergebnis
'sample_func_1({arg})'
expression = func_dict['label_1'].format(arg="'123'")
expression
#Ausführungsergebnis
"sample_func_1('123')"
eval(expression)
#Ausführungsergebnis
'123 String hinzugefügt'
result = eval(expression)
result
#Ausführungsergebnis
'123 String hinzugefügt'
add_text = "result2="
text = add_text + expression
text
#Ausführungsergebnis
"result2=sample_func_1('123')"
exec(text)
result2
#Ausführungsergebnis
'123 String hinzugefügt'