Step 12 (S-97848)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/24459/step/12

Step 12 (S-97848) 1.png

[00:00 - 00:15] очень часто в процессе решения тех или иных задач возникает необходимость передать функции неопределенного числа аргументов предположим написать функцию минимум или минут который принимал 2 аргумента а и б и в начало наименьшее из них однако в такой момент завеса зашли естественно вопросом


[00:15 - 00:34] почему функционирования всего 2 аргумента почему и 3 что она мешает мне ходить минимум из 3 элементов а боится или из 4 или 5 и и так далее этим же вопросом здесь разработчики языка поэтому языке python существует механизм благодаря которому мы можем сделать в этой функции неопределенное число аргументов


[00:34 - 00:52] давайте рассмотрим синтаксис например пускай наша функция принимает 2 обязательно позиционных аргумента а и б о чем он ставит звездочка arx отличие от того момента когда мы с помощью звездочки придаем аргументов этой функции здесь звездочка работает с точностью до наоборот


[00:52 - 01:09] контексте передача аргументов когда мы пишем звездочка после нее кортеж или список мы имеем в виду что разверни нам пожалуйста кортеж или список и подстать элемент этом как то же списка в качестве позиционных аргумента функции осей же когда мы описываем аргументы которые функция принимает


[01:09 - 01:28] я буду с точностью до наоборот поговорим интерпретатор что звенит все оппозиционные аргументы которые не нашли себе место и положи хорошо тогда давайте рассмотрим как исполняются наша функция от 5 аргументов 20 p 110-20-30 40 50 в качестве аргумента функции принято б при этом 10 и 20


[01:28 - 01:46] интерьер 1 2 аргумента 1 позиционных аргументами затем кей сказал по правилам все оппозиционные аргументы которые не проинициализирован наши переменные а наш аргумент а и б они будут помещены внутрь то есть arx будет


[01:46 - 02:02] кортежам состоящем из 30 до 40 и тогда ничего удивительного что будет именно такой какой он есть сейчас мы будем позиционной аргумент а затем вам предстоит аргумент б равен 20


[02:02 - 02:18] а затем мы будем все дополнительно аргументы которые попали вас 1 за 1 важно понимать что ваксом


[02:18 - 02:38] все дополнительные позиционно аргумента который мы передали а также что они находятся внутри а с ровно в том порядке в котором они появляются когда функцию вызываемый то есть если бы на переставили 30 и 40 здесь местами то эти строки кто то поменялись местами а если мы допустим добавились добычей 60 то в конце у нас тоже появилась еще строка 60


[02:38 - 02:56] именованных аргументов похожий механизм давайте рассмотрим его синтаксис функции принято некоторые принимать в определенных аргумента а и б сидели 2 звездочки слово parks передача аргументов функции здесь de звездочка работает с точностью до наоборот


Step 12 (S-97848) 2.png

[02:56 - 03:13] когда мы вызываем функцию пишем на слова мы имеем ввиду что то свое нужно раскрыть и передать пары ключ значение в качестве аргумента и значения аргумента и вызов функции с аргументами здесь же 2 точки работы с точностью до наоборот мы говорим терминатору что когда то функцию вызывают


[03:13 - 03:33] а когда ты инициализировать переменные все именованные переменные которые не участвовали в инициализации и помести внутрь кварц давайте рассмотрим вызов вызов нашей функции пускай мы передали 10 20 кассе позиционных аргументов и то передать именно он аргумента ц д джим нет


[03:33 - 03:51] деятельность 1 нейтронного аргументом поэтому вставь вместо вас является 2 прицелом потом встать на стабэк и по правилам все именованный аргументы которые не участвовали инициализации подослать к вам с 13 дд quarks то есть нашла кварц


[03:51 - 04:07] будет представлять из себя следующие слова а по плечу царя было ничего не 30 по плечо для обозначения 40 и по ключу джина


[04:07 - 04:26] значение 123 тогда ничего удивительного что раз выглядят именно таким образом сначала вывели позиционно аргумент а потом затем мы перебрали все кричит внутри нашего словаря


[04:26 - 04:42] и вывели каждую пар ключ значение то есть д равно 40 равна 120 грамм и c равно 30 вашим замечаниям является тот факт что будут только те аргументы которые не срезаться не участвовали


[04:42 - 04:59] давайте посмотрим на следующий вызов если бы мы убрали 2 позиционных минут 20 а в конце написали бы равно 20 скобку закрыли то тогда 10 является 1 позиционном аргументы вам инициализировал аргумент а так


[04:59 - 05:18] аргументы закончились самый вот это вот да в конце недели сделал бы аргумент б затем нас досталось всего 3 аргумента ц это и джине который является именованными и при этом не участвовали инициализация поэтому содержимое словаря clarks не особенно изменится предыдущего вызова точнее вообще не изменится


[05:18 - 05:33] ц д джимми так не там останутся поэтому вывод нашей функции не изменится с точностью до перебор ключей внутри словаря это часть останется точно такой же здесь много наших меняться местами но не более того


Step 12 (S-97848) 3.png

[05:33 - 05:48] немножко подытоживая стоит отметить что все эти подходы можно иногда даже нужно совмещать поэтому мы должны посмотреть на то как формальный выглядит синтетические верное определение любой функции начать стоит пожалуй с самого начала носить ключевое слово удав от слова define


[05:48 - 06:06] затем мы придаем имя функции затем начинается позиционный аргументы там какие то а б и ц у них есть только имена и в них есть только порядок затем унаследовал позиционно аргументы со значением по умолчанию то есть через блок аргументов которые может быть равна 0


[06:06 - 06:25] я равно true и что нибудь еще что то в голову затем разве звездочка имя кортежа куда можно положить все оппозиционные взгляды которого инициализации не участвовали то есть вот здесь мы можем то девяточка arx или звездочка


[06:25 - 06:41] не знаю холостая что угодно как вам это угодно от снижается ключевым словом а он смотрите например хвост потому что он является 1 из общепринятых но в общем то можно превратить любое имя картошку давно хотели складывать все аргументы которые инициализации не участвовали


[06:41 - 06:56] затем если вы все таки оказались звездочку и картавишь куда нужно сказывать все позиционно аргументы которые не попали но сейчас он инициализация следует блок аргументов которые мы можем передать только при этом он может быть э


[06:56 - 07:14] так же просто именами то здесь могу быть не знаю что мы не признали аж много так же значением по умолчанию аш равно 10 и что нибудь еще важно понимать что здание может упасть ни 1 оппозиционная переменной напряженно аргумент


[07:14 - 07:31] потому что все оппозиционные аргументы о котором уже передали они находятся либо здесь либо они пользоваться да и так сюда не может попасть на 1 позиционный аргумент то все аргументы в этом блоке должны быть явно переданы по имени 1017 бы допустим


[07:31 - 07:49] то чтобы передать аргументы же i функцию function name когда бы мы ее вызывали должны быть явно указать что нибудь та же допустим равно true и i равно 10 а если бы они небыли проинициализирован значение по умолчанию


[07:49 - 08:04] и так же как у них нет порядка нам более мне не важно в каком они порядке идут и нам не важно что может быть начало определена вот здесь 1 аргумент за значением по умолчанию допустим а и равны 10 тем же значением по умолчанию


[08:04 - 08:23] и последним блоком является 2 звездочки имя словаря когда нам хотели сказать все именованный переменной которая инициализации не поучавствовали то есть есть например например зайчика звездочка класс это также является никаким литературным именем мы можем выбрать любое имя слова которые нам угодно и указать его сюда


[08:23 - 08:42] несмотря на формальную громоздкость конструкции блок между звездочка и кортежам указываем и спрячешься не используется в реальной жизни я увидел как нередко то есть вот эта часть чаще всего просто не используется и те функции которые вы будете видеть лучше всего скорость просто позиционно аргументы позиционной аргумент за


[08:42 - 09:01] значение по умолчанию как отношусь 2 звездочки и слова куда распихивать аргумент в которой участвовали инициализации пример синтетический верный конструкции будет пример а настя позиционной 1 аргумент а я значения по умолчанию прицел надменная со значением по умолчанию


Step 12 (S-97848) 4.png

[09:01 - 09:17] равным 10 затем придадим звездочка собираться все позиционный аргументы которые нечастого инициализации затем используй метки блока требуется крайне редко этот кейворд only argument или документ в котором можно только по имени


[09:17 - 09:36] и они уже в находиться здесь система следует блок из 2 звездочек и кварц куда вас вмешаться только те аргументы которые реально по имени который не участвовал инициализации тогда заметим что из обязательных аргументов у нас не проинициализирован всего 2 это а


[09:36 - 09:51] то есть 10 значение по умолчанию значение по умолчанию здесь его нет и здесь его нет это чтоб наши функцию вызвать не должно превышать 1 сезоном аргументом 15 потому что так и явно указать и допустим что равно 15


[09:51 - 10:09] и мы должны явно по имени да потому что находится в этом блоке а к тому же 5 аргументов и по имени чаще всего вы не будете встречать этих громоздких конструкций однако считаю что очень важно понимать как и в каком порядке интерпретатор инициализировать аргумента который мы передаем в этой функции