• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Decorators with parameters in Python

D

Devanther

Top Contributor

Hallo,

kann mir jemand erklären was dieser Code macht. Für mich unglaublich schwer zu verstehen.
Was passiert bei der Ausgabe?
Kann mir jemand erklären SCHRITT FÜR SCHRITT erklären was der Code macht?

Was macht das?
@functools.wraps(func)

Ich weiss gar nicht wo ich anfangen soll, diesen Code zu verstehen!
Kann mir jemand schrittweise durch den Code helfen, es sind paar Zeilen Code aber trotzdem sehr schwer.
 
temi

temi

Top Contributor
Code bitte hier in Codetags einfügen. Die drei Punkte rechts vom Smiley...

Python:
import functools

user = {'username': 'jose123', 'access_level': 'user'}


def user_has_permission(access_level):
    def my_decorator(func):
        @functools.wraps(func)
        def secure_func(panel):
            if user.get('access_level') == access_level:
                return func(panel)
        return secure_func
    return my_decorator


@user_has_permission('user')
def my_function(panel):
    """
    Allows us to retrieve the password for the admin panel.
    """
    return f'Password for {panel} panel is 1234.'


print(my_function.__name__)
print(my_function('movies'))
 
kneitzel

kneitzel

Top Contributor
Evtl. willst Du Dir das einmal ansehen: https://realpython.com/primer-on-python-decorators/

Durch den Decorator wird die Funktion nur aufgerufen, denn user.get('access_level') == access_level.
Der Decorator hat den access_level als Parameter bekommen ('user').
Der Aufruf erfolgt mit dem func(...).

Aber das ist bei dem Link alles im Detail erläutert mit Beispielen. Die einfach einmal in Ruhe alles durchgehen um das zu verstehen.
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben