Мазмунга өтүү

Функцияларды тереңирээк: *args, **kwargs, демейки маанилер

Сабактын башталышы

Функцияларды тереңирээк: *args, **kwargs жана демейки маанилер

Функция сигнатураларын ийкемдүү, коопсуз жана чакырууга ыңгайлуу кылып долбоорлоңуз

Негизги идея: функциянын сигнатурасы — чакырган код маалыматты ичине кантип берерин аныктаган келишим. Python бай куралдарды берет — демейки маанилер, аталышы боюнча аргументтер, *args жана **kwargs, — ошондо бир функция көп чакыруу ыкмаларын кабыл алат жана морт болбойт. Туура колдонсо ашыкча кодду жоёт; кайдыгер колдонсо жашыруун каталарды жашырат.
Бул теманын аягында сиз төмөнкүлөрдү жасай аласыз:
  • аргументтерди орду боюнча жана аталышы боюнча берип, кайсынысы түшүнүктүү экенин билүү;
  • параметрлерге демейки маанилерди берип, алар качан колдонуларын түшүнүү;
  • *args аркылуу каалаган сандагы кошумча позициялык аргументтерди чогултуу (кортеж);
  • **kwargs аркылуу каалаган сандагы кошумча аталыштуу аргументтерди чогултуу (сөздүк);
  • параметрлерди туура иреттеп, аталышы гана параметрлерди жарыялоо;
  • ырааттуулуктарды жана сөздүктөрдү чакырууга * жана ** менен ачуу;
  • атактуу өзгөрүлмө демейки маани тузагынан качуу.

1. Позициялык жана аталыштуу аргументтер

Сиз функцияларды мурунтан чакырасыз. Ар бир аргументти берүүнүн эки жолу бар. Позициялык аргумент параметрге чакыруудагы орду боюнча дал келет. Аталыштуу аргумент аталышы боюнча дал келет жана ат=маани түрүндө жазылат.

def book_room(guest, nights, breakfast):
    print(guest, "-", nights, "nights, breakfast:", breakfast)

# Баары позициялык: тартип эмне кайда барарын чечет
book_room("Mara", 3, True)

# Баары аталыштуу: тартип мааниге ээ эмес, аталыштар маанилуу
book_room(nights=3, guest="Mara", breakfast=True)

# Аралаш: адегенде позициялык, анан аталыштуу
book_room("Mara", breakfast=True, nights=3)

Натыйжа:

Mara - 3 nights, breakfast: True
Mara - 3 nights, breakfast: True
Mara - 3 nights, breakfast: True

Аталыштуу аргументтер чакырууну өзүн-өзү документтештирүүчү кылат: book_room("Mara", 3, True) окурманды True эмнени билдирерин эстөөгө мажбурлайт, ал эми breakfast=True аны ачык айтат. Бир катуу эреже: аталыштуу аргументти колдонгондон кийин, андан кийинки бардык аргументтер да аталыштуу болушу керек. Позициялык аргумент эч качан аталыштуудан кийин боло албайт.

book_room(guest="Mara", 3, True) SyntaxError: positional argument follows keyword argument катасын чыгарат.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө