[{"data":1,"prerenderedAt":1223},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fpython\u002Fst6":386,"\u002Fblog\u002Fpython\u002Fst6-surround":1218},[4],{"title":5,"path":6,"stem":7,"children":8,"page":114},"Blog","\u002Fblog","blog",[9,115,184,329],{"title":10,"path":11,"stem":12,"children":13,"page":114},"Ege","\u002Fblog\u002Fege","blog\u002Fege",[14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110],{"title":15,"path":16,"stem":17},"ЕГЭ Задание 1","\u002Fblog\u002Fege\u002Ftask1","blog\u002Fege\u002Ftask1",{"title":19,"path":20,"stem":21},"ЕГЭ Задание 10","\u002Fblog\u002Fege\u002Ftask10","blog\u002Fege\u002Ftask10",{"title":23,"path":24,"stem":25},"ЕГЭ Задание 11","\u002Fblog\u002Fege\u002Ftask11","blog\u002Fege\u002Ftask11",{"title":27,"path":28,"stem":29},"ЕГЭ Задание 12","\u002Fblog\u002Fege\u002Ftask12","blog\u002Fege\u002Ftask12",{"title":31,"path":32,"stem":33},"ЕГЭ Задание 13","\u002Fblog\u002Fege\u002Ftask13","blog\u002Fege\u002Ftask13",{"title":35,"path":36,"stem":37},"ЕГЭ Задание 14","\u002Fblog\u002Fege\u002Ftask14","blog\u002Fege\u002Ftask14",{"title":39,"path":40,"stem":41},"ЕГЭ Задание 15","\u002Fblog\u002Fege\u002Ftask15","blog\u002Fege\u002Ftask15",{"title":43,"path":44,"stem":45},"ЕГЭ Задание 16","\u002Fblog\u002Fege\u002Ftask16","blog\u002Fege\u002Ftask16",{"title":47,"path":48,"stem":49},"ЕГЭ Задание 17","\u002Fblog\u002Fege\u002Ftask17","blog\u002Fege\u002Ftask17",{"title":51,"path":52,"stem":53},"ЕГЭ Задание 18","\u002Fblog\u002Fege\u002Ftask18","blog\u002Fege\u002Ftask18",{"title":55,"path":56,"stem":57},"ЕГЭ Задание 19, 20, 21","\u002Fblog\u002Fege\u002Ftask19_20_21","blog\u002Fege\u002Ftask19_20_21",{"title":59,"path":60,"stem":61},"ЕГЭ Задание 2","\u002Fblog\u002Fege\u002Ftask2","blog\u002Fege\u002Ftask2",{"title":63,"path":64,"stem":65},"ЕГЭ Задание 22","\u002Fblog\u002Fege\u002Ftask22","blog\u002Fege\u002Ftask22",{"title":67,"path":68,"stem":69},"ЕГЭ Задание 23","\u002Fblog\u002Fege\u002Ftask23","blog\u002Fege\u002Ftask23",{"title":71,"path":72,"stem":73},"ЕГЭ Задание 24","\u002Fblog\u002Fege\u002Ftask24","blog\u002Fege\u002Ftask24",{"title":75,"path":76,"stem":77},"ЕГЭ Задание 25","\u002Fblog\u002Fege\u002Ftask25","blog\u002Fege\u002Ftask25",{"title":79,"path":80,"stem":81},"ЕГЭ Задание 26","\u002Fblog\u002Fege\u002Ftask26","blog\u002Fege\u002Ftask26",{"title":83,"path":84,"stem":85},"ЕГЭ Задание 27","\u002Fblog\u002Fege\u002Ftask27","blog\u002Fege\u002Ftask27",{"title":87,"path":88,"stem":89},"ЕГЭ Задание 3","\u002Fblog\u002Fege\u002Ftask3","blog\u002Fege\u002Ftask3",{"title":91,"path":92,"stem":93},"ЕГЭ Задание 4","\u002Fblog\u002Fege\u002Ftask4","blog\u002Fege\u002Ftask4",{"title":95,"path":96,"stem":97},"ЕГЭ Задание 5","\u002Fblog\u002Fege\u002Ftask5","blog\u002Fege\u002Ftask5",{"title":99,"path":100,"stem":101},"ЕГЭ Задание 6","\u002Fblog\u002Fege\u002Ftask6","blog\u002Fege\u002Ftask6",{"title":103,"path":104,"stem":105},"ЕГЭ Задание 7","\u002Fblog\u002Fege\u002Ftask7","blog\u002Fege\u002Ftask7",{"title":107,"path":108,"stem":109},"ЕГЭ Задание 8","\u002Fblog\u002Fege\u002Ftask8","blog\u002Fege\u002Ftask8",{"title":111,"path":112,"stem":113},"ЕГЭ Задание 9","\u002Fblog\u002Fege\u002Ftask9","blog\u002Fege\u002Ftask9",false,{"title":116,"path":117,"stem":118,"children":119,"page":114},"Oge","\u002Fblog\u002Foge","blog\u002Foge",[120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180],{"title":121,"path":122,"stem":123},"ОГЭ Задание 1","\u002Fblog\u002Foge\u002Ftask1","blog\u002Foge\u002Ftask1",{"title":125,"path":126,"stem":127},"ОГЭ Задание 10","\u002Fblog\u002Foge\u002Ftask10","blog\u002Foge\u002Ftask10",{"title":129,"path":130,"stem":131},"ОГЭ Задание 11","\u002Fblog\u002Foge\u002Ftask11","blog\u002Foge\u002Ftask11",{"title":133,"path":134,"stem":135},"ОГЭ Задание 12","\u002Fblog\u002Foge\u002Ftask12","blog\u002Foge\u002Ftask12",{"title":137,"path":138,"stem":139},"ОГЭ Задание 13","\u002Fblog\u002Foge\u002Ftask13","blog\u002Foge\u002Ftask13",{"title":141,"path":142,"stem":143},"ОГЭ Задание 14","\u002Fblog\u002Foge\u002Ftask14","blog\u002Foge\u002Ftask14",{"title":145,"path":146,"stem":147},"ОГЭ Задание 15","\u002Fblog\u002Foge\u002Ftask15","blog\u002Foge\u002Ftask15",{"title":149,"path":150,"stem":151},"ОГЭ Задание 16","\u002Fblog\u002Foge\u002Ftask16","blog\u002Foge\u002Ftask16",{"title":153,"path":154,"stem":155},"ОГЭ Задание 2","\u002Fblog\u002Foge\u002Ftask2","blog\u002Foge\u002Ftask2",{"title":157,"path":158,"stem":159},"ОГЭ Задание 3","\u002Fblog\u002Foge\u002Ftask3","blog\u002Foge\u002Ftask3",{"title":161,"path":162,"stem":163},"ОГЭ Задание 4","\u002Fblog\u002Foge\u002Ftask4","blog\u002Foge\u002Ftask4",{"title":165,"path":166,"stem":167},"ОГЭ Задание 5","\u002Fblog\u002Foge\u002Ftask5","blog\u002Foge\u002Ftask5",{"title":169,"path":170,"stem":171},"ОГЭ Задание 6","\u002Fblog\u002Foge\u002Ftask6","blog\u002Foge\u002Ftask6",{"title":173,"path":174,"stem":175},"ОГЭ Задание 7","\u002Fblog\u002Foge\u002Ftask7","blog\u002Foge\u002Ftask7",{"title":177,"path":178,"stem":179},"ОГЭ Задание 8","\u002Fblog\u002Foge\u002Ftask8","blog\u002Foge\u002Ftask8",{"title":181,"path":182,"stem":183},"ОГЭ Задание 9","\u002Fblog\u002Foge\u002Ftask9","blog\u002Foge\u002Ftask9",{"title":185,"path":186,"stem":187,"children":188,"page":114},"Python","\u002Fblog\u002Fpython","blog\u002Fpython",[189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325],{"title":190,"path":191,"stem":192},"Знакомство с синтаксисом","\u002Fblog\u002Fpython\u002Fst1","blog\u002Fpython\u002Fst1",{"title":194,"path":195,"stem":196},"Отладка","\u002Fblog\u002Fpython\u002Fst10","blog\u002Fpython\u002Fst10",{"title":198,"path":199,"stem":200},"Модули и пакеты","\u002Fblog\u002Fpython\u002Fst11","blog\u002Fpython\u002Fst11",{"title":202,"path":203,"stem":204},"Кортежи","\u002Fblog\u002Fpython\u002Fst12","blog\u002Fpython\u002Fst12",{"title":206,"path":207,"stem":208},"Знакомство со списками","\u002Fblog\u002Fpython\u002Fst13","blog\u002Fpython\u002Fst13",{"title":210,"path":211,"stem":212},"Списки и циклы","\u002Fblog\u002Fpython\u002Fst14","blog\u002Fpython\u002Fst14",{"title":214,"path":215,"stem":216},"Использование списков ч.1","\u002Fblog\u002Fpython\u002Fst15","blog\u002Fpython\u002Fst15",{"title":218,"path":219,"stem":220},"Использование списков ч.2","\u002Fblog\u002Fpython\u002Fst16","blog\u002Fpython\u002Fst16",{"title":222,"path":223,"stem":224},"Использование списков ч.3","\u002Fblog\u002Fpython\u002Fst17","blog\u002Fpython\u002Fst17",{"title":226,"path":227,"stem":228},"Словари","\u002Fblog\u002Fpython\u002Fst18","blog\u002Fpython\u002Fst18",{"title":230,"path":231,"stem":232},"Множества","\u002Fblog\u002Fpython\u002Fst19","blog\u002Fpython\u002Fst19",{"title":234,"path":235,"stem":236},"Переменные","\u002Fblog\u002Fpython\u002Fst2","blog\u002Fpython\u002Fst2",{"title":238,"path":239,"stem":240},"Хеш-таблицы","\u002Fblog\u002Fpython\u002Fst20","blog\u002Fpython\u002Fst20",{"title":242,"path":243,"stem":244},"Решето Эратосфена","\u002Fblog\u002Fpython\u002Fst21","blog\u002Fpython\u002Fst21",{"title":246,"path":247,"stem":248},"Длинная арифметика","\u002Fblog\u002Fpython\u002Fst22","blog\u002Fpython\u002Fst22",{"title":250,"path":251,"stem":252},"Декораторы функций","\u002Fblog\u002Fpython\u002Fst23","blog\u002Fpython\u002Fst23",{"title":254,"path":255,"stem":256},"Знакомство с алгоритмами","\u002Fblog\u002Fpython\u002Fst24","blog\u002Fpython\u002Fst24",{"title":258,"path":259,"stem":260},"Бинарный поиск – примеры задач","\u002Fblog\u002Fpython\u002Fst25","blog\u002Fpython\u002Fst25",{"title":262,"path":263,"stem":264},"Сортировка выбором","\u002Fblog\u002Fpython\u002Fst26","blog\u002Fpython\u002Fst26",{"title":266,"path":267,"stem":268},"Рекурсия и стек","\u002Fblog\u002Fpython\u002Fst27","blog\u002Fpython\u002Fst27",{"title":270,"path":271,"stem":272},"Быстрая сортировка","\u002Fblog\u002Fpython\u002Fst28","blog\u002Fpython\u002Fst28",{"title":274,"path":275,"stem":276},"Поиск в ширину","\u002Fblog\u002Fpython\u002Fst29","blog\u002Fpython\u002Fst29",{"title":278,"path":279,"stem":280},"Работа со строками","\u002Fblog\u002Fpython\u002Fst3","blog\u002Fpython\u002Fst3",{"title":282,"path":283,"stem":284},"Поиск в глубину","\u002Fblog\u002Fpython\u002Fst30","blog\u002Fpython\u002Fst30",{"title":286,"path":287,"stem":288},"Сбалансированные деревья","\u002Fblog\u002Fpython\u002Fst31","blog\u002Fpython\u002Fst31",{"title":290,"path":291,"stem":292},"Алгоритм Дейкстры","\u002Fblog\u002Fpython\u002Fst32","blog\u002Fpython\u002Fst32",{"title":294,"path":295,"stem":296},"Жадные алгоритмы","\u002Fblog\u002Fpython\u002Fst33","blog\u002Fpython\u002Fst33",{"title":298,"path":299,"stem":300},"Динамическое программирование","\u002Fblog\u002Fpython\u002Fst34","blog\u002Fpython\u002Fst34",{"title":302,"path":303,"stem":304},"Алгоритм k ближайших соседей","\u002Fblog\u002Fpython\u002Fst35","blog\u002Fpython\u002Fst35",{"title":306,"path":307,"stem":308},"Типы данных","\u002Fblog\u002Fpython\u002Fst4","blog\u002Fpython\u002Fst4",{"title":310,"path":311,"stem":312},"О функциях","\u002Fblog\u002Fpython\u002Fst5","blog\u002Fpython\u002Fst5",{"title":314,"path":315,"stem":316},"Свойства и методы","\u002Fblog\u002Fpython\u002Fst6","blog\u002Fpython\u002Fst6",{"title":318,"path":319,"stem":320},"Определение функций","\u002Fblog\u002Fpython\u002Fst7","blog\u002Fpython\u002Fst7",{"title":322,"path":323,"stem":324},"Логика","\u002Fblog\u002Fpython\u002Fst8","blog\u002Fpython\u002Fst8",{"title":326,"path":327,"stem":328},"Циклы","\u002Fblog\u002Fpython\u002Fst9","blog\u002Fpython\u002Fst9",{"title":330,"path":331,"stem":332,"children":333,"page":114},"Toi","\u002Fblog\u002Ftoi","blog\u002Ftoi",[334,338,342,346,350,354,358,362,366,370,374,378,382],{"title":335,"path":336,"stem":337},"Информация и информационные процессы","\u002Fblog\u002Ftoi\u002Fst1","blog\u002Ftoi\u002Fst1",{"title":339,"path":340,"stem":341},"Электронные таблицы","\u002Fblog\u002Ftoi\u002Fst10","blog\u002Ftoi\u002Fst10",{"title":343,"path":344,"stem":345},"Система, её свойства и компоненты. Моделирование","\u002Fblog\u002Ftoi\u002Fst11","blog\u002Ftoi\u002Fst11",{"title":347,"path":348,"stem":349},"Представление информации в компьютере","\u002Fblog\u002Ftoi\u002Fst12","blog\u002Ftoi\u002Fst12",{"title":351,"path":352,"stem":353},"Средства информационно-коммуникационных технологий. Файловая система","\u002Fblog\u002Ftoi\u002Fst13","blog\u002Ftoi\u002Fst13",{"title":355,"path":356,"stem":357},"Комбинаторика","\u002Fblog\u002Ftoi\u002Fst2","blog\u002Ftoi\u002Fst2",{"title":359,"path":360,"stem":361},"Адресация в интернете","\u002Fblog\u002Ftoi\u002Fst3","blog\u002Ftoi\u002Fst3",{"title":363,"path":364,"stem":365},"Измерение количества информации","\u002Fblog\u002Ftoi\u002Fst4","blog\u002Ftoi\u002Fst4",{"title":367,"path":368,"stem":369},"Системы счисления","\u002Fblog\u002Ftoi\u002Fst5","blog\u002Ftoi\u002Fst5",{"title":371,"path":372,"stem":373},"Диаграммы Эйлера — Венна","\u002Fblog\u002Ftoi\u002Fst6","blog\u002Ftoi\u002Fst6",{"title":375,"path":376,"stem":377},"Условие Фано","\u002Fblog\u002Ftoi\u002Fst7","blog\u002Ftoi\u002Fst7",{"title":379,"path":380,"stem":381},"Теория графов","\u002Fblog\u002Ftoi\u002Fst8","blog\u002Ftoi\u002Fst8",{"title":383,"path":384,"stem":385},"Алгебра логики","\u002Fblog\u002Ftoi\u002Fst9","blog\u002Ftoi\u002Fst9",{"id":387,"title":314,"author":388,"body":393,"date":1209,"description":1210,"extension":1211,"image":1212,"meta":1213,"minRead":1214,"navigation":1215,"num":638,"path":315,"seo":1216,"stem":316,"__hash__":1217},"python\u002Fblog\u002Fpython\u002Fst6.md",{"name":389,"avatar":390},"Штана Альберт Игоревич",{"src":391,"alt":392},"me.jpg","@ashtana",{"type":394,"value":395,"toc":1198},"minimark",[396,400,407,412,419,425,428,433,436,504,511,516,519,558,561,564,580,591,662,665,704,707,753,756,759,776,779,783,786,823,826,829,858,862,865,868,901,904,961,965,968,991,994,997,1030,1033,1066,1069,1094,1097,1140,1143,1147,1150,1153,1156,1169,1172,1180,1191,1194],[397,398,314],"h2",{"id":399},"свойства-и-методы",[401,402,403],"p",{},[404,405,406],"em",{},"У данных обычно есть важные атрибуты и методы. Они определяют поведение и возможности этих данных.\nПодробнее о них можно узнать в объектно-ориентированном программировании.\nВ этой статье рассмотрим основы работы с методами в Python.",[408,409,411],"h3",{"id":410},"атрибуты-и-методы","Атрибуты и методы",[401,413,414,418],{},[415,416,417],"strong",{},"Атрибуты (attributes)"," — это переменные, которые хранят данные в объектах классов.\nУ каждого объекта класса есть свой набор атрибутов, которые могут быть доступны для чтения и записи.",[401,420,421,424],{},[415,422,423],{},"Методы (methods)"," — это функции, которые связаны с определенными объектами данных.",[401,426,427],{},"Атрибуты и методы являются такими же выражениями, как переменные и вызовы функций.\nТакже они могут использоваться в комбинации с другими выражениями.",[429,430,432],"h4",{"id":431},"объекты","Объекты",[401,434,435],{},"В программировании происходит взаимодействие с данными, создание чисел и строк, и выполнение над ними различных операций.\nЧтобы выполнить операцию, применяются либо операторы, либо функции:",[437,438,443],"pre",{"className":439,"code":440,"language":441,"meta":442,"style":442},"language-python shiki shiki-themes github-light","# Сложение с помощью оператора +\n3 + 3 # 6\n# Подсчет длины с помощью функции len()\nname = 'Python'\nlen(name)  # 6\n","python","",[444,445,446,455,472,478,492],"code",{"__ignoreMap":442},[447,448,451],"span",{"class":449,"line":450},"line",1,[447,452,454],{"class":453},"sAwPA","# Сложение с помощью оператора +\n",[447,456,458,462,466,469],{"class":449,"line":457},2,[447,459,461],{"class":460},"sYu0t","3",[447,463,465],{"class":464},"sD7c4"," +",[447,467,468],{"class":460}," 3",[447,470,471],{"class":453}," # 6\n",[447,473,475],{"class":449,"line":474},3,[447,476,477],{"class":453},"# Подсчет длины с помощью функции len()\n",[447,479,481,485,488],{"class":449,"line":480},4,[447,482,484],{"class":483},"sgsFI","name ",[447,486,487],{"class":464},"=",[447,489,491],{"class":490},"sYBdl"," 'Python'\n",[447,493,495,498,501],{"class":449,"line":494},5,[447,496,497],{"class":460},"len",[447,499,500],{"class":483},"(name)  ",[447,502,503],{"class":453},"# 6\n",[401,505,506,507,510],{},"В примере выше есть четкое разделение: данные отдельно, функции отдельно.\nНо это не единственный способ организации кода.\nВ Python наравне с таким разделением используется и другой подход — ",[415,508,509],{},"объектно-ориентированный(ОО)",".",[401,512,513],{},[415,514,515],{},"Объектно-ориентированный код строится на объединении данных и функций в одну сущность — объект. Данные в таком случае называются атрибутами, а функции — методами.",[401,517,518],{},"Вот пример:",[437,520,522],{"className":439,"code":521,"language":441,"meta":442,"style":442},"name = 'Python'\n# Метод upper()\nupper_name = name.upper()\nprint(upper_name)  # => 'PYTHON'\n",[444,523,524,532,537,547],{"__ignoreMap":442},[447,525,526,528,530],{"class":449,"line":450},[447,527,484],{"class":483},[447,529,487],{"class":464},[447,531,491],{"class":490},[447,533,534],{"class":449,"line":457},[447,535,536],{"class":453},"# Метод upper()\n",[447,538,539,542,544],{"class":449,"line":474},[447,540,541],{"class":483},"upper_name ",[447,543,487],{"class":464},[447,545,546],{"class":483}," name.upper()\n",[447,548,549,552,555],{"class":449,"line":480},[447,550,551],{"class":460},"print",[447,553,554],{"class":483},"(upper_name)  ",[447,556,557],{"class":453},"# => 'PYTHON'\n",[401,559,560],{},"Строки в Python — это объекты. В примере выше мы вызываем метод, то есть функцию, которая связана со строкой.\nВызов происходит через точку, которая идет сразу за именем переменной. В остальном методы работают как обычные функции.",[401,562,563],{},"Также вызов можно делать и напрямую:",[437,565,567],{"className":439,"code":566,"language":441,"meta":442,"style":442},"'Python'.upper()  # 'PYTHON'\n",[444,568,569],{"__ignoreMap":442},[447,570,571,574,577],{"class":449,"line":450},[447,572,573],{"class":490},"'Python'",[447,575,576],{"class":483},".upper()  ",[447,578,579],{"class":453},"# 'PYTHON'\n",[401,581,582,583,590],{},"В строки встроено много методов, которые постоянно нужны разработчику. Посмотреть их список можно в ",[584,585,589],"a",{"href":586,"rel":587},"https:\u002F\u002Fdocs.python.org\u002F3\u002Flibrary\u002Fstdtypes.html#string-methods",[588],"nofollow","документации",".\nВот несколько полезных примеров:",[437,592,594],{"className":439,"code":593,"language":441,"meta":442,"style":442},"name = 'Python'\n# Возвращает индекс первого вхождения буквы в строку\nname.find('t')  # 2\n# Переводит в нижний регистр\nname.lower()  # 'python'\n# Заменяет одну подстроку другой\nname.replace('on', 'off')  # 'Pythoff'\n",[444,595,596,604,609,623,628,636,642],{"__ignoreMap":442},[447,597,598,600,602],{"class":449,"line":450},[447,599,484],{"class":483},[447,601,487],{"class":464},[447,603,491],{"class":490},[447,605,606],{"class":449,"line":457},[447,607,608],{"class":453},"# Возвращает индекс первого вхождения буквы в строку\n",[447,610,611,614,617,620],{"class":449,"line":474},[447,612,613],{"class":483},"name.find(",[447,615,616],{"class":490},"'t'",[447,618,619],{"class":483},")  ",[447,621,622],{"class":453},"# 2\n",[447,624,625],{"class":449,"line":480},[447,626,627],{"class":453},"# Переводит в нижний регистр\n",[447,629,630,633],{"class":449,"line":494},[447,631,632],{"class":483},"name.lower()  ",[447,634,635],{"class":453},"# 'python'\n",[447,637,639],{"class":449,"line":638},6,[447,640,641],{"class":453},"# Заменяет одну подстроку другой\n",[447,643,645,648,651,654,657,659],{"class":449,"line":644},7,[447,646,647],{"class":483},"name.replace(",[447,649,650],{"class":490},"'on'",[447,652,653],{"class":483},", ",[447,655,656],{"class":490},"'off'",[447,658,619],{"class":483},[447,660,661],{"class":453},"# 'Pythoff'\n",[401,663,664],{},"То же самое касается чисел и остальных типов данных. Можно сказать, что в Python почти всё является объектом:",[437,666,668],{"className":439,"code":667,"language":441,"meta":442,"style":442},"x = -10\n# Возвращает модуль числа\n# Имя выглядит странно, но это действительно имя метода\nx.__abs__()\n",[444,669,670,683,688,693],{"__ignoreMap":442},[447,671,672,675,677,680],{"class":449,"line":450},[447,673,674],{"class":483},"x ",[447,676,487],{"class":464},[447,678,679],{"class":464}," -",[447,681,682],{"class":460},"10\n",[447,684,685],{"class":449,"line":457},[447,686,687],{"class":453},"# Возвращает модуль числа\n",[447,689,690],{"class":449,"line":474},[447,691,692],{"class":453},"# Имя выглядит странно, но это действительно имя метода\n",[447,694,695,698,701],{"class":449,"line":480},[447,696,697],{"class":483},"x.",[447,699,700],{"class":460},"__abs__",[447,702,703],{"class":483},"()\n",[401,705,706],{},"В примере выше есть имя метода, в начале и конце которого по два подчеркивания.\nВ Python так называют методы, которые не предназначены для прямого вызова.\nДля них создали функции, которые внутри себя уже сами вызывают методы:",[437,708,710],{"className":439,"code":709,"language":441,"meta":442,"style":442},"x = -10\nabs(x)  # вызывает x.__abs__()\n# -10 в 3 степени\npow(x, 3)  # вызывает x.__pow__(3)\n",[444,711,712,722,733,738],{"__ignoreMap":442},[447,713,714,716,718,720],{"class":449,"line":450},[447,715,674],{"class":483},[447,717,487],{"class":464},[447,719,679],{"class":464},[447,721,682],{"class":460},[447,723,724,727,730],{"class":449,"line":457},[447,725,726],{"class":460},"abs",[447,728,729],{"class":483},"(x)  ",[447,731,732],{"class":453},"# вызывает x.__abs__()\n",[447,734,735],{"class":449,"line":474},[447,736,737],{"class":453},"# -10 в 3 степени\n",[447,739,740,743,746,748,750],{"class":449,"line":480},[447,741,742],{"class":460},"pow",[447,744,745],{"class":483},"(x, ",[447,747,461],{"class":460},[447,749,619],{"class":483},[447,751,752],{"class":453},"# вызывает x.__pow__(3)\n",[401,754,755],{},"Создатель Python решил, что будет нагляднее, если математические или похожие на математические операции выразить функциями.\nОн хотел, чтобы такие функции воспринимались как операции, типа сложения или вычитания. Так привычнее для тех, кто изучал математику.\nТак же работает и функция len().",[401,757,758],{},"Кроме методов у объектов есть атрибуты, но у встроенных в Python объектов их мало.\nНапример, атрибут __doc__, который возвращает документацию функции. Поэтому функции тоже считаются объектами:",[437,760,762],{"className":439,"code":761,"language":441,"meta":442,"style":442},"len.__doc__  # 'Return the number of items in a container.'\n",[444,763,764],{"__ignoreMap":442},[447,765,766,768,770,773],{"class":449,"line":450},[447,767,497],{"class":460},[447,769,510],{"class":483},[447,771,772],{"class":460},"__doc__",[447,774,775],{"class":453},"  # 'Return the number of items in a container.'\n",[401,777,778],{},"Атрибуты работают и выглядят как переменные, только указываются через точку после объекта.\nТеперь поговорим про неизменяемость типов данных.",[429,780,782],{"id":781},"неизменяемость","Неизменяемость",[401,784,785],{},"Допустим есть такой вызов:",[437,787,789],{"className":439,"code":788,"language":441,"meta":442,"style":442},"name = 'Python'\nprint(name.upper())  # => PYTHON\n# Что напечатает на экран этот вызов?\nprint(name)  # => ?\n",[444,790,791,799,809,814],{"__ignoreMap":442},[447,792,793,795,797],{"class":449,"line":450},[447,794,484],{"class":483},[447,796,487],{"class":464},[447,798,491],{"class":490},[447,800,801,803,806],{"class":449,"line":457},[447,802,551],{"class":460},[447,804,805],{"class":483},"(name.upper())  ",[447,807,808],{"class":453},"# => PYTHON\n",[447,810,811],{"class":449,"line":474},[447,812,813],{"class":453},"# Что напечатает на экран этот вызов?\n",[447,815,816,818,820],{"class":449,"line":480},[447,817,551],{"class":460},[447,819,500],{"class":483},[447,821,822],{"class":453},"# => ?\n",[401,824,825],{},"Вызов метода .upper() возвращает новое значение, в котором все буквы преобразованы в верхний регистр, но он не меняет исходную строку.\nПоэтому внутри переменной окажется старое значение: 'Python'. Эта логика справедлива для методов всех примитивных типов.",[401,827,828],{},"Вместо того, чтобы изменять значение, можно заменить значение. Для этого понадобятся переменные:",[437,830,832],{"className":439,"code":831,"language":441,"meta":442,"style":442},"name = 'Python'\nname = name.upper()\nprint(name)  # => PYTHON\n",[444,833,834,842,850],{"__ignoreMap":442},[447,835,836,838,840],{"class":449,"line":450},[447,837,484],{"class":483},[447,839,487],{"class":464},[447,841,491],{"class":490},[447,843,844,846,848],{"class":449,"line":457},[447,845,484],{"class":483},[447,847,487],{"class":464},[447,849,546],{"class":483},[447,851,852,854,856],{"class":449,"line":474},[447,853,551],{"class":460},[447,855,500],{"class":483},[447,857,808],{"class":453},[429,859,861],{"id":860},"методы-выражения","Методы выражения",[401,863,864],{},"Методы — такие же выражения, как переменные и вызовы функции, значит, их можно по-разному комбинировать.",[401,866,867],{},"Например, использовать в операциях:",[437,869,871],{"className":439,"code":870,"language":441,"meta":442,"style":442},"name = 'Alex'\n'Hello, ' + name.upper() + '!'  # Hello, ALEX!\n",[444,872,873,882],{"__ignoreMap":442},[447,874,875,877,879],{"class":449,"line":450},[447,876,484],{"class":483},[447,878,487],{"class":464},[447,880,881],{"class":490}," 'Alex'\n",[447,883,884,887,889,892,895,898],{"class":449,"line":457},[447,885,886],{"class":490},"'Hello, '",[447,888,465],{"class":464},[447,890,891],{"class":483}," name.upper() ",[447,893,894],{"class":464},"+",[447,896,897],{"class":490}," '!'",[447,899,900],{"class":453},"  # Hello, ALEX!\n",[401,902,903],{},"Или использовать в аргументах функций:",[437,905,907],{"className":439,"code":906,"language":441,"meta":442,"style":442},"name = 'Alex'\nprint(name.lower())  # => alex\nn1, n2 = 2, 32\n# bit_length() — вычисляет количество бит, необходимых для представления числа в двоичном виде\nprint((n1 + n2).bit_length())  # 6\n",[444,908,909,917,927,942,947],{"__ignoreMap":442},[447,910,911,913,915],{"class":449,"line":450},[447,912,484],{"class":483},[447,914,487],{"class":464},[447,916,881],{"class":490},[447,918,919,921,924],{"class":449,"line":457},[447,920,551],{"class":460},[447,922,923],{"class":483},"(name.lower())  ",[447,925,926],{"class":453},"# => alex\n",[447,928,929,932,934,937,939],{"class":449,"line":474},[447,930,931],{"class":483},"n1, n2 ",[447,933,487],{"class":464},[447,935,936],{"class":460}," 2",[447,938,653],{"class":483},[447,940,941],{"class":460},"32\n",[447,943,944],{"class":449,"line":480},[447,945,946],{"class":453},"# bit_length() — вычисляет количество бит, необходимых для представления числа в двоичном виде\n",[447,948,949,951,954,956,959],{"class":449,"line":494},[447,950,551],{"class":460},[447,952,953],{"class":483},"((n1 ",[447,955,894],{"class":464},[447,957,958],{"class":483}," n2).bit_length())  ",[447,960,503],{"class":453},[408,962,964],{"id":963},"цепочка-методов","Цепочка методов",[401,966,967],{},"Рассмотрим, как комбинировать различные подходы, когда пишем код, а также разберем типичные ошибки новичков.\nУ нас есть следующий код:",[437,969,971],{"className":439,"code":970,"language":441,"meta":442,"style":442},"name = 'Python'\nprint(name.upper().lower())  # => `python`\n",[444,972,973,981],{"__ignoreMap":442},[447,974,975,977,979],{"class":449,"line":450},[447,976,484],{"class":483},[447,978,487],{"class":464},[447,980,491],{"class":490},[447,982,983,985,988],{"class":449,"line":457},[447,984,551],{"class":460},[447,986,987],{"class":483},"(name.upper().lower())  ",[447,989,990],{"class":453},"# => `python`\n",[401,992,993],{},"Он напечатал на экране python.",[401,995,996],{},"Синтаксис нескольких подряд идущих точек мы видим впервые, но все операции, которые здесь встречаются, нам знакомы.\nВ этом коде объединились известные возможности языка.\nТакое в программировании происходит часто.\nЕсли вы не знаете синтаксис, то можно все равно пробовать комбинировать различные подходы, и есть вероятность, что они заработают.\nЧтобы понять, как работает этот код, нужно разбить цепочку на отдельные операции:",[437,998,1000],{"className":439,"code":999,"language":441,"meta":442,"style":442},"name = 'Python'\nupper_name = name.upper()  # 'PYTHON'\nprint(upper_name.lower())  # 'python'\n",[444,1001,1002,1010,1021],{"__ignoreMap":442},[447,1003,1004,1006,1008],{"class":449,"line":450},[447,1005,484],{"class":483},[447,1007,487],{"class":464},[447,1009,491],{"class":490},[447,1011,1012,1014,1016,1019],{"class":449,"line":457},[447,1013,541],{"class":483},[447,1015,487],{"class":464},[447,1017,1018],{"class":483}," name.upper()  ",[447,1020,579],{"class":453},[447,1022,1023,1025,1028],{"class":449,"line":474},[447,1024,551],{"class":460},[447,1026,1027],{"class":483},"(upper_name.lower())  ",[447,1029,635],{"class":453},[401,1031,1032],{},"Первый и второй примеры эквивалентны.\nМы можем выполнять операции последовательно с промежуточным созданием переменных, а можем строить непрерывную цепочку из атрибутов и методов.\nВ цепочках вычисления всегда идут слева направо.\nЕще один пример для закрепления:",[437,1034,1036],{"className":439,"code":1035,"language":441,"meta":442,"style":442},"name = 'Python'\nprint(name.replace('Py', 'Ti').lower())  # => ?\n",[444,1037,1038,1046],{"__ignoreMap":442},[447,1039,1040,1042,1044],{"class":449,"line":450},[447,1041,484],{"class":483},[447,1043,487],{"class":464},[447,1045,491],{"class":490},[447,1047,1048,1050,1053,1056,1058,1061,1064],{"class":449,"line":457},[447,1049,551],{"class":460},[447,1051,1052],{"class":483},"(name.replace(",[447,1054,1055],{"class":490},"'Py'",[447,1057,653],{"class":483},[447,1059,1060],{"class":490},"'Ti'",[447,1062,1063],{"class":483},").lower())  ",[447,1065,822],{"class":453},[401,1067,1068],{},"Над этим кодом нужно хорошо подумать. .lower() применяется к результату вызова метода, который находится левее. А метод replace() возвращает строку.\nНовички часто делают ошибки в цепочках с методами и забывают ставить вызов:",[437,1070,1072],{"className":439,"code":1071,"language":441,"meta":442,"style":442},"name = 'Python'\n# Этот код отработает неверно!\nprint(name.upper.lower())\n",[444,1073,1074,1082,1087],{"__ignoreMap":442},[447,1075,1076,1078,1080],{"class":449,"line":450},[447,1077,484],{"class":483},[447,1079,487],{"class":464},[447,1081,491],{"class":490},[447,1083,1084],{"class":449,"line":457},[447,1085,1086],{"class":453},"# Этот код отработает неверно!\n",[447,1088,1089,1091],{"class":449,"line":474},[447,1090,551],{"class":460},[447,1092,1093],{"class":483},"(name.upper.lower())\n",[401,1095,1096],{},"Также можно строить бесконечно длинные и бесполезные цепочки, которые включают в себя срезы:",[437,1098,1100],{"className":439,"code":1099,"language":441,"meta":442,"style":442},"name = 'Python'\n# Чему равен результат такого вызова?\nprint(name[1:5].upper().find('Y'))\n",[444,1101,1102,1110,1115],{"__ignoreMap":442},[447,1103,1104,1106,1108],{"class":449,"line":450},[447,1105,484],{"class":483},[447,1107,487],{"class":464},[447,1109,491],{"class":490},[447,1111,1112],{"class":449,"line":457},[447,1113,1114],{"class":453},"# Чему равен результат такого вызова?\n",[447,1116,1117,1119,1122,1125,1128,1131,1134,1137],{"class":449,"line":474},[447,1118,551],{"class":460},[447,1120,1121],{"class":483},"(name[",[447,1123,1124],{"class":460},"1",[447,1126,1127],{"class":483},":",[447,1129,1130],{"class":460},"5",[447,1132,1133],{"class":483},"].upper().find(",[447,1135,1136],{"class":490},"'Y'",[447,1138,1139],{"class":483},"))\n",[401,1141,1142],{},"С функциями это не сработает, так как обычно они вкладываются друг в друга — f(f(f())).\nЭто значительно усложняет анализ. Но это не значит, что нельзя сделать красиво.\nВ других языках это реализуется через композицию функций или pipeline-оператор.",[408,1144,1146],{"id":1145},"стандартная-библиотека","Стандартная библиотека",[401,1148,1149],{},"Python поставляется с набором полезных функций, которые составляют стандартную библиотеку.\nОбычно в нее входят тысячи функций, которые невозможно запомнить.\nПоэтому программист должен знать, где найти документацию по этим функциям, а также представлять результат, который хочет получить.\nПо этим причинам программировать без интернета сложно.",[401,1151,1152],{},"Новички часто не понимают, как и где узнавать про функции, которые нужно использовать.\nПри этом нет способа, который поможет решить эту проблему.\nПо мере работы разработчики становятся опытнее, пополняют свой багаж знаний и практик.\nПостепенно они знакомятся с более интересными функциями, которые решают их задачи по-другому.",[401,1154,1155],{},"Вот советы, которые помогут повысить уровень профессионализма:",[1157,1158,1159,1163,1166],"ul",{},[1160,1161,1162],"li",{},"Всегда отслеживайте, с каким типом данных вы работаете. Так вы найдете необходимую функцию в соответствующем разделе документации. Например, для работы со строками нужно изучать строковые функции",[1160,1164,1165],{},"Периодически открывайте раздел со стандартными функциями по вашей тематике, изучайте сигнатуры и способы использования",[1160,1167,1168],{},"Чаще читайте чужой код на GitHub. Особое внимание обращайте на код библиотек, которые используете в своем коде",[401,1170,1171],{},"Если следовать этим советам и внимательно относиться к деталям, то уже скоро вы заметите, как развиваетесь и растете как профессионал.",[401,1173,1174,1175,510],{},"Полезная ссылка:\n",[584,1176,1179],{"href":1177,"rel":1178},"https:\u002F\u002Fdocs-python.ru\u002Fstandart-library\u002F",[588],"Стандартная библиотека Python3 на русском",[401,1181,1182,1183,1186,1187,1190],{},"Попробуйте сами запустить код в окне ниже с интерпретатором Python и повторите примеры из статьи чтобы самим увидеть и понять как всё это работает.\nДля этого в ячейке с кодом нажмите клавиши на клавиатуре ",[415,1184,1185],{},"Shift+Enter"," или запустите код через ",[415,1188,1189],{},"кнопку Run"," по значку ▶.",[1192,1193],"jypiter",{},[1195,1196,1197],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":442,"searchDepth":457,"depth":494,"links":1199},[1200],{"id":399,"depth":457,"text":314,"children":1201},[1202,1207,1208],{"id":410,"depth":474,"text":411,"children":1203},[1204,1205,1206],{"id":431,"depth":480,"text":432},{"id":781,"depth":480,"text":782},{"id":860,"depth":480,"text":861},{"id":963,"depth":474,"text":964},{"id":1145,"depth":474,"text":1146},"2025-01-29","Использование встроенных функций. Цепочки методов. Стандартная библиотека Python","md","images\u002Fblog\u002Fpython\u002Fst6\u002Fimg.png",{},12,true,{"title":314,"description":1210},"MXIS_qomtd2_aV6Ot9rH1HJ4myBPwxyoHbGCzXyqi_k",[1219,1221],{"title":310,"path":311,"stem":312,"description":1220,"children":-1},"Использование готовых функций. Приём и возврат значений функций. Свойства функций",{"title":318,"path":319,"stem":320,"description":1222,"children":-1},"Создание функций. Параметры функций. Аннотации типов. Окружение",1780737507875]