Python | Hvordan får man funktionsnavnet?
En af de mest fremtrædende stilarter til kodning er at følge OOP-paradigmet. For dette, i dag, har stress været at skrive kode med modularitet, øge debugging og skabe en mere robust, genbrugelig kode. Alt dette tilskyndede til brugen af forskellige funktioner til forskellige opgaver, og derfor er vi bundet til at kende visse hacks af funktioner. Denne artikel diskuterer, hvordan man udskriver navnet på en funktion. Lad os diskutere visse måder, hvorpå dette kan gøres.
Metode 1: Hent funktionsnavn i Python ved hjælp af function.__name__
Denne funktion er blevet introduceret i Python 3 i Python3.
Python3
# initializing function> def> GFG():> > return> 'You just called for success !!'> # printing function name> # using function.__name__> print> (> 'The name of function is : '> +> GFG.__name__)> |
Output:
The name of function is : GFG
Metode 2: Hent funktionsnavn i Python ved hjælp af function.func_name
Ved at bruge en simpel funktionsegenskabsfunktion, func_name, kan man få navnet på funktionen og kan derfor være ret praktisk til testformålet og til tider også til dokumentation. Ulempen er, at dette kun fungerer for Python2.
Python
# initializing function> def> GFG():> > return> 'You just called for success !!'> # printing function name> # using function.func_name> print> (> 'The name of function is : '> +> GFG.func_name)> |
Output:
The name of function is : GFG
Metode 3: Hent funktionsnavn i Python ved hjælp af attributten __qualname__
__qualname__ giver mere fuldstændig information end __name__ og kan derfor være mere nyttig ved fejlretning. For at udtrække navnet fra ethvert objekt eller klasse kan du også bruge dets __qualname__-attribut.
Python3
def> Geekforgeeks():> > pass> class> Geekforgeeks(> object> ):> > def> my_method(> self> ):> > pass> # 'my_function'> print> (Geekforgeeks.__qualname__)> # 'My_Class.my_method'> print> (Geekforgeeks.my_method.__qualname__)> |
Output:
Geekforgeeks Geekforgeeks.my_method
Metode 4: Hent funktionsnavn i Python ved hjælp af inspiceringsmodulet
Denne kode importerer inspektionsmodulet og definerer en funktion get_function_name(), der returnerer navnet på funktionen. Funktionen bruger funktionen inspect.currentframe() til at hente frame-objektet for den aktuelle funktion og returnerer derefter co_name-attributten for frame-objektets f_code-attribut, som er navnet på funktionen.
Funktionen inspect.currentframe() returnerer et rammeobjekt for rammen for den, der ringer. Frame-objektet er en instans af klassen FrameInfo, som har flere attributter, der giver information om rammen, såsom f_code-attributten, som er kodeobjektet for funktionen, og co_name-attributten, som er navnet på funktionen.
Til sidst udskriver koden navnet på funktionen ved hjælp af funktionen get_function_name().
Python3
import> inspect> # initializing function> def> get_function_name():> > # get the frame object of the function> > frame> => inspect.currentframe()> > return> frame.f_code.co_name> # printing function name> print> (> 'The name of function is : '> +> get_function_name())> # test_function> #This code is contributed by Edula Vinay Kumar Reddy> |
Produktion
The name of function is : get_function_name
Denne tilgang har en tidskompleksitet på O(1) og et hjælperum på O(1).