Python 3: преимущества и недостатки языка Python интерпретируемый язык программирования


print("Test function 1") def



Download 7,02 Mb.
bet46/59
Sana23.02.2022
Hajmi7,02 Mb.
#159718
1   ...   42   43   44   45   46   47   48   49   ...   59
Bog'liq
Документ Microsoft Office Word

print("Test function 1")


  • def second_test():

  • print("Test function 2")

    Мы хотим дополнить их так, чтобы перед вызовом основного кода функции печаталась строка “Run function”, а по окончании – “Stop function”.
    Сделать это можно двумя способами. Первый – это добавить указанные строки в начало в конец каждой функции, но это не очень удобно, т.к. если мы захотим убрать это, нам придется снова модифицировать тело функции. А если они написаны не нами, либо являются частью общей кодовой базы проекта, сделать это будет уже не так просто. Второй вариант – это воспользоваться знаниями из раздела “Что нужно знать о функциях в Python?”
    Создадим вот такую функцию.

    1. def simple_decore(fn):

    2. def wrapper():

    3. print("Run function")

    4. fn()

    5. print("Stop function")

    6. return wrapper()

    Обернем наши функции в эту оболочку.

    1. first_test_wrapped = simple_decore(first_test)

    2. second_test_wrapped = simple_decore(second_test)

    Функции first_test и second_test остались неизменными.

    1. >>> first_test()

    2. Test function 1

    3. >>> second_test()

    4. Test function 2

    Функции first_test_wrapped и second_test_wrapped  обладают функционалом, которого мы добивались.

    1. >>> first_test_wrapped()

    2. Run function

    3. Test function 1

    4. Stop function

    5. >>> first_test_wrapped()

    6. Run function

    7. Test function 1

    8. Stop function

    Если необходимо, чтобы так работали функций с именами first_test и second_test, то можно сделать так.

    1. first_test = first_test_wrapped

    2. second_test = second_test_wrapped

    Проверим это.

    1. >>> first_test()

    2. Run function

    3. Test function 1

    4. Stop function

    5. >>> second_test()

    6. Run function

    7. Test function 2

    8. Stop function

    То, что мы только что сделали и является реализацией идеи декоратора. Но вместо строк:


    1. Download 7,02 Mb.

      Do'stlaringiz bilan baham:
  • 1   ...   42   43   44   45   46   47   48   49   ...   59




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
    ma'muriyatiga murojaat qiling

    kiriting | ro'yxatdan o'tish
        Bosh sahifa
    юртда тантана
    Боғда битган
    Бугун юртда
    Эшитганлар жилманглар
    Эшитмадим деманглар
    битган бодомлар
    Yangiariq tumani
    qitish marakazi
    Raqamli texnologiyalar
    ilishida muhokamadan
    tasdiqqa tavsiya
    tavsiya etilgan
    iqtisodiyot kafedrasi
    steiermarkischen landesregierung
    asarlaringizni yuboring
    o'zingizning asarlaringizni
    Iltimos faqat
    faqat o'zingizning
    steierm rkischen
    landesregierung fachabteilung
    rkischen landesregierung
    hamshira loyihasi
    loyihasi mavsum
    faolyatining oqibatlari
    asosiy adabiyotlar
    fakulteti ahborot
    ahborot havfsizligi
    havfsizligi kafedrasi
    fanidan bo’yicha
    fakulteti iqtisodiyot
    boshqaruv fakulteti
    chiqarishda boshqaruv
    ishlab chiqarishda
    iqtisodiyot fakultet
    multiservis tarmoqlari
    fanidan asosiy
    Uzbek fanidan
    mavzulari potok
    asosidagi multiservis
    'aliyyil a'ziym
    billahil 'aliyyil
    illaa billahil
    quvvata illaa
    falah' deganida
    Kompyuter savodxonligi
    bo’yicha mustaqil
    'alal falah'
    Hayya 'alal
    'alas soloh
    Hayya 'alas
    mavsum boyicha


    yuklab olish