Step 3 (S-97853)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/24460/step/3

Step 3 (S-97853) 1.png

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


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


[00:31 - 00:48] как можно сказать никогда функция вызывается рассуждать локальным space в этом локальном на экспрессе мы будем хранить аргументы функции и локальной переменной объявленной внутри функции когда функции совершать свой исполнения нам не просто снимает со стека но и разрушает от локальным спать который был создан


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


[01:06 - 01:25] глобальном неймспейсе будет потому что как искал создаются самым 1 а затем на с тобой классов функций и индонезии которые они создают когда мы начнем исполняет данный код мы сначала же исполним 1 2 присваивания это и свое значение 18 и значение окей


[01:25 - 01:42] здесь за и свое состояние пространства имен local etc будет соответствовать 18 гиней будет соответствовать строка k


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


[01:58 - 02:16] после того как мы определили функции начинается самое интересное вопросам вывести на экран значение функции фаренгейту tc здесь интерпретатора нужно подумать об нескольких вещах сразу о том что такое имя принято что такое имя фаренгейт и что такое имя tc


[02:16 - 02:33] основное правило которым пользуются интерпретатор это звучало посмотри сам локальным на экспрессе потом посмотрим спеси функции которые вас вызвала потом еще и еще и так далее затем вниз то есть глобус и затем экспрессе buildings используя наши графическое представление с так это выглядело примерно вот так


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


[02:50 - 03:05] однако вернемся к нашему случаю момент исполнения прям так и так глубоко настать у вас нет было столько функции вы находились всего лишь функции модуль


[03:05 - 03:22] это означает что функция которая является 1 мы бы сначала проверили в names по есть глобус а затем мы проверили на себе алтын и не принято в на мр сигнал потому что его там не объявляли ну то есть вот он и уюта и 7 пифа n гейт


[03:22 - 03:39] однако то как функционирует является стандартным тестам языка python то имя принято находится в новосибирске тынц ему средства функция которая имеет значения на экран хорошо мы нашли имя принято на сп себе алтын спена нажимаете имя фаренгейт


[03:39 - 03:57] это совсем несложно потому что находится в том же вызвали то есть в global вот она самая и есть соответствует функция для того чтобы вычислить эту функцию нам нужно найти также ими t see immediately также находится в global потому что здесь мои объявления


Step 3 (S-97853) 2.png

[03:57 - 04:14] чтобы узнать что же нужно вывести на экран вы сначала должны исполнить функцию фаренгейт с аргументом etc поэтому курсов и не кладет на стек когда мы завтракаем где создается локальный напоить для этой функции


[04:14 - 04:32] в этом локальном спейсе пока чтобы хранится только 1 аргумент в котором объявили это имя ему также бы следовало 18 как и именем tc в глобальном на не спейся все мы должны исполнить 1 строку функции фаренгейт


[04:32 - 04:49] это строку с начала работы знать что же такое c а как мы говорили о сначала посмотреть локальными спейсе он может найти имя c локальным на экспрессе потому что она является аргументом функции поэтому не будет ее использовать


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


[05:08 - 05:27] который будет ссылаться на вычисленное значение 32 и 4 теперь вы должны вернуть вычисли значения прибавив к нему 32 и так далее строки опять же им м п попробуй понять откуда нужно взять это имя потому что в локальной на сп системе темпа которые нужно использовать


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


[05:45 - 06:02] и вот после этого места должны вызвать функцию функционала за себя локальным space куда надо себя 1 аргумент


[06:02 - 06:20] а собственно 64 человека который нужно вывести затем когда функция print означает температуре в фаренгейтах на экран она завершается исполнении снимаются со стека и ударяет в локальные space


[06:20 - 06:36] с тем интерпретатор видит а очередную инструкцию принт а он опять же находит имя принято внутри себя lens потому что его нет в global затем смойте что же такое имя он осознает что это


[06:36 - 06:51] определи в глобус потому что сейчас мы находимся в на экспрессе глобус таким образом 2 print выйдет на экраны нас такое окей которая призвала в глобальном неймспейсе такой механизм создания пространства имен


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