Preskoči na glavno vsebino
Učilnica FRI 23/24
  • Domov
  • Več
Zapri
Preklopi iskalni vnos
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Domov
Course Activities
Forumi Naloge Viri
Nedavno dostopani predmeti
You are not enrolled in any courses
  1. py2
  2. Obljubljena naloga iz dekoratorjev

Obljubljena naloga iz dekoratorjev

Dekorator v_float1

Napiši dekorator v_float1, s katerim lahko dekoriramo funkcije, ki imajo en sam argument. Dekorator naj funkcijo dekorira tako, da pred klicem funkcije spremeni njen argument v float.

Dekorator bi lahko uporabili tako

@v_float1
def kvadrat(x):
    return x ** 2

in potem klicali

kvadrat("12")

Seveda pa mora še vedno delati tudi

kvadrat(4)

Poglej rešitve nalog, ki smo jih delali skupaj. Tam smo z dekoratorjem poklicali funkcijo in nato spreminjali njen rezultat (zaokrožili smo ga z round). Tu pa pustimo rezultat pri miru in pred klicem spreminjamo argumente.

Dekorator v_float

Ta dekorator dela isto, le s funkcijami, ki prejmejo poljubno število argumentov. Vse mora spremeniti v float, da bomo lahko funkcijo

@v_float
def hipo(a, b):
    from math import sqrt
    return sqrt(a ** 2 + b ** 2)

klicali z

hipo(3, 4)
hipo(3, "4")
hipo("3", "4")
hipo("3", 4)

Dekorator v

Ta je pa za kravžljanje možganov (a ne bo prehudo, če preberete prej omenjene rešitve nalog, kjer smo že naredili nekaj podobnega.

Namesto da bi vedno pretvarjal v float, pretvarja v tisto, kar damo kot argument dekoratorju.

Če napišemo

@v(float)
def hipo(a, b):
    from math import sqrt
    return sqrt(a ** 2 + b ** 2)

se hipo obnaša enako kot prej, poleg tega pa lahko napišemo, recimo

s = [4, 5, 6]

@v(int)
def k_ti(k):
    return s[k]

in argument (k) se pretvarja v int.

◄ Zapiski - rešitve in razlaga
Testi ►
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo Obvestilo o avtorskih pravicah
Stran poganja Moodle