Skip to main content
Učilnica FRI 23/24
  • Home
  • More
Close
Toggle search input
English ‎(en)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
You are currently using guest access
Log in
Home
Course Activities
Assignments Forums Resources
Recent Courses
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 ►
You are currently using guest access (Log in)
Get the mobile app Obvestilo o avtorskih pravicah
Powered by Moodle