Stellen Sie sich das folgende Szenario vor: Sie haben eine Funktion, die den Namen einer Variablen als Argument benötigt Führen Sie einige Operationen basierend auf diesem Namen aus. Gibt es eine Möglichkeit, den ursprünglichen Variablennamen innerhalb der Funktion abzurufen?
Um diese Frage zu beantworten, untersuchen wir eine Methode, die das Inspect-Modul nutzt, mit der Sie den Aufrufkontext abrufen und die Variablennamen aus dem Codekontext extrahieren können .
<code class="python">import inspect def foo(a, f, b): # Get the stack frame of the calling function frame = inspect.currentframe() # Move up one level to get the frame of the calling context frame = inspect.getouterframes(frame)[1] # Get the source code context of the calling context string = inspect.getframeinfo(frame[0]).code_context[0].strip() # Extract the argument names from the code context args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: # Handle keyword arguments names.append(i.split('=')[1].strip()) else: # Handle positional arguments names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b = c) main()</code>
Erklärung:
Beispielausgabe:
['e', '1000', 'c']
Hinweis: Bei diesem Ansatz wird der Aufrufstapel überprüft und interpretiert Quellcodekontext, der fragil und fehleranfällig ist. Es wird nicht für den praktischen Gebrauch empfohlen und sollte nur für akademische oder Unterhaltungszwecke in Betracht gezogen werden.
Das obige ist der detaillierte Inhalt vonKönnen Sie ursprüngliche Variablennamen aus Funktionsargumenten in Python extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!