ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Python syntax checker

Python code

Python checker allows to check your Python code syntax (Python 3), and find Python errors. This Python code checker tool highlights and goes to line with a syntax error.

To check your code, you must copy and paste, drag and drop a Python file or directly type in the Online Python editor below, and click on «Check Python syntax» button.

You can see the user guide to help you to use this python checker tool.

User guide

It is quick and easy to analyze python code!

Python code checker tool

Python is a server-side scripting language, but can also be used as a general-purpose programming language.

Python error checker tool allows to find syntax errors (lint). You can test your Python code online directly in your browser.

If a syntax error is detected, then the line in error is highlighted, and it jumps to it to save time (no need to search the line).

Note: This tool no longer offers sandbox, it was not good enough.

About Python

Python is an interpreted programming language, it features a dynamic type system and automatic memory management (garbage collector). Python is available for many operating systems.It has a large standard library.

Python formatting is visually uncluttered, and often uses English keywords rather than punctuation. Python uses whitespace indentation instead of curly brackets to delimit blocks.

Python is often used as a programming language in high school and higher education, especially in France (I am French).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π›ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ Π² Python

Π’ сообщСствС Python, ΠΊΠ°ΠΊ ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ людСй, сущСствуСт Π½Π΅ΠΊΠΎΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ людСй ΠΏΡ€ΠΎΡˆΠ»ΠΎΡΡŒ ΠΏΠΎ всСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ граблям ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ ΠΎΠΏΡ‹Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π±ΠΈΡ‚Ρ‹Π΅ шишки. Π—Π°Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя, благодаря выступлСниям Π½Π° конфСрСнциях, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ заявлСниям, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, ΡΡ‚Π°Ρ‚ΡŒΡΠΌ Π² Π±Π»ΠΎΠ³Π°Ρ…, ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ ΠΈ Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ, это Π·Π½Π°Π½ΠΈΠ΅ стало ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ просто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ β€œΡ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ практиками”.

К Ρ‚Π°ΠΊΠΈΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅.

Π‘ΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ (ΠΈ Π΄Π°ΠΆΠ΅ просто ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ) всС Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ β€” Π½Π΅ самая простая Π·Π°Π΄Π°Ρ‡Π°. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ люди ΠΏΠ»ΠΎΡ…ΠΎ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ склонны Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ошибки ΠΏΠΎ Π½Π΅Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊΠΎΠ²Ρ‹ люди, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ подСлаСшь. ΠœΠ°ΡˆΠΈΠ½Ρ‹, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, прСкрасно ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, поэтому появились инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ слСдованиС Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ.

Π’ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках Π΅Ρ‰Ρ‘ Π½Π° этапС компиляции программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ‰Ρ‰Π°ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ фидбэк ΠΎ написанном ΠΊΠΎΠ΄Π΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирован, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ прСдупрСТдСния ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅. Π’.ΠΊ. Python являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π³Π΄Π΅ этап компиляции ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ отсутствуСт, Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. На самом Π΄Π΅Π»Π΅, это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΊΡ€ΡƒΡ‚ΠΎ β€” ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ являСтся Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ Python-ΠΊΠΎΠ΄ΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π½Π΅ запуская Π΅Π³ΠΎ.

Π’ этом постС я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ Π΄Π²Π° самых популярных Π»ΠΈΠ½Ρ‚Π΅Ρ€Π° для Python:

Π’Π΅Ρ€ΠΌΠΈΠ½ β€œlint” Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π°ΠΊΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π² 1979 Π³ΠΎΠ΄Ρƒ. Π’Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Π½Π° C, которая ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π»Π° ΠΎΠ± использовании Π½Π΅ΠΏΠΎΡ€Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ языковых конструкций. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ β€œΠ»ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈβ€ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ статичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ распространённыС ошибки, Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. А Π½Π°Π·Π²Π°Π½ΠΎ ΠΎΠ½ΠΎ «lint» Π² Ρ‡Π΅ΡΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΡˆΡ‚ΡƒΠΊΠΈ:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

flake8

Установка

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Анализ кода в Python

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Анализ ΠΊΠΎΠ΄Π° Π² Python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. БущСствуСт нСсколько Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π° для Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ своСго ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, соотвСтствуСт Π»ΠΈ ΠΎΠ½ стандартам. Π‘Π°ΠΌΡ‹ΠΌ популярным ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ pylint. Он ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² настойках ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…. Он Ρ‚Π°ΠΊΠΆΠ΅ провСряСт ваш ΠΊΠΎΠ΄ Π½Π° соотвСтствиС с PEP8, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ руководством ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ядра Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ‰Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ошибки. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ pylint провСряСт ваш ΠΊΠΎΠ΄ Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ стандартов PEP8, Π½ΠΎ Π½Π΅ Π½Π° всС. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΡƒΠ΄Π΅Π»ΠΈΠΌ нашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ pyflakes.

НачнСм с pylint

ΠŸΠ°ΠΊΠ΅Ρ‚ pylint Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Python, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ PyPI (Python Package Index), ΠΈΠ»ΠΈ нСпосрСдствСнно сайт ΠΏΠ°ΠΊΠ΅Ρ‚Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая сдСлаСт всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° вас:

Если всС ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΏΠ»Π°Π½Ρƒ, Ρ‚ΠΎ pylint установится, ΠΈ ΠΌΡ‹ смоТСм ΠΏΠΎΠΉΡ‚ΠΈ дальшС.

Анализ вашСго кода

ПослС установки pylint Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚. Если это Π½Π΅ сработало, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠ΄ для Π°Π½Π°Π»ΠΈΠ·Π°. Π’ΠΎΡ‚ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, которая содСрТит Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ошибки. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π΅Ρ‘ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ crummy_code.py:

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ошибки Π½Π΅ запуская ΠΊΠΎΠ΄? Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ pylint Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ…!

Π•ΡΡ‚ΡŒ вопросы ΠΏΠΎ Python?

На нашСм Ρ„ΠΎΡ€ΡƒΠΌΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ любой вопрос ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ всСго нашСго сообщСства!

Telegram Π§Π°Ρ‚ & Канал

ВступитС Π² наш Π΄Ρ€ΡƒΠΆΠ½Ρ‹ΠΉ Ρ‡Π°Ρ‚ ΠΏΠΎ Python ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ! Π‘Ρ‚Π°Π½ΡŒΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒΡŽ большого сообщСства!

Паблик VK

Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сообщСств ΠΏΠΎ Python Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти Π’Πš. Π’ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ для вас!

ПослС запуска этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π²Ρ‹Π΄Π°Ρ‡Ρƒ Π½Π° вашСм экранС. Π’ΠΎΡ‚ частичный ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΠΌ ΠΈ разбСрСмся. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π±ΡƒΠΊΠ²Ρ‹:

Наш pylint нашСл 3 ошибки, 4 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠ΅ΠΉ, 2 строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ 3 ошибки – это ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я искал. ΠœΡ‹ попытаСмся ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π½Π°Π²Π΅Π΄Π΅ΠΌ порядок Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°Ρ…, ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getWeight Π½Π° get_weight, Π² связи с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ camelCase Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² названиях ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Нам Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² get_weight, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ β€œself” выступал Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ВзглянСм Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π”Π°Π²Π°ΠΉΡ‚Π΅ запустим Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ с pylint ΠΈ посмотрим, насколько ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Для краткости, ΠΌΡ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· рассмотрим ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ:

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. Если ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ docstrings, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ количСство ошибок Π²Π΄Π²ΠΎΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ pyflakes!

Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с pyflakes

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ pyflakes это Ρ‡Π°ΡΡ‚ΡŒ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ называСтся Divmod Project. Pyflakes Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ выполняСт провСряСмый ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ pylint. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ pyflakes ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ pip, easy_install, ΠΈΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника.

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π’Π°ΠΌ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ условия ΠΏΡ€ΠΈ Π·Π°ΠΊΠ°Π·Π΅ классов Π½Π° посты ΠΈ Ρ„ΠΎΡ‚ΠΎ Π² Одноклассники. ΠŸΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΠΉΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ рСсурс Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со скидками, Π½ΠΎ ΠΈ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ качСство ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поступлСния.

ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с запуска pyflakes Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии Ρ‚ΠΎΠΉ ΠΆΠ΅ части ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ использовали для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ pylint. Π’ΠΎΡ‚ ΠΈ ΠΎΠ½:

Как ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π² этом ΠΏΠΎΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ошибки, Ρ‚Ρ€ΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ pyflakes ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

НСсмотря Π½Π° супСрски Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π²Ρ‹Π΄Π°Ρ‡ΠΈ, pyflakes Π½Π΅ нашСл всС ошибки. Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getWeight ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ getWeight сам ΠΏΠΎ сСбС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° self. Π§Ρ‚ΠΎ-ΠΆΠ΅, Π²Ρ‹, собствСнно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π² ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ ΠΎΠ½ всСгда называСтся self. Если Π²Ρ‹ исправили ΠΊΠΎΠ΄, опСрируя Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ сказал pyflakes, ΠΊΠΎΠ΄ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, нСсмотря Π½Π° это.

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° запуска pylint ΠΈ pyflakes Π² вашСм собствСнном ΠΊΠΎΠ΄Π΅, Π»ΠΈΠ±ΠΎ ΠΆΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Python, Π²Ρ€ΠΎΠ΄Π΅ SQLAlchemy, послС Ρ‡Π΅Π³ΠΎ слСдуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Π²Ρ‹Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ своСм ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ инструмСнты. pylint ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с Wingware, Editra, ΠΈ PyDev. НСкоторыС прСдупрСТдСния pylint ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈΠ»ΠΈ Π½Π΅ особо умСстными. БущСствуСт нСсколько способов ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ прСдупрСТдСния ΠΎΠ± устарСвании, Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -generate-rcfile для создания ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° config, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ pylint. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ pylint ΠΈ pyflakes Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ваш ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктах.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Являюсь администратором Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ€Ρ‚Π°Π»ΠΎΠ² ΠΏΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ языков программирования Python, Golang ΠΈ Kotlin. Π’ составС нСбольшой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², ΠΌΡ‹ занимаСмся популяризациСй языков программирования Π½Π° Ρ€ΡƒΡΡΠΊΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ статСй Π±Ρ‹Π»Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π°ΠΌΠΈ Π½Π° русский язык ΠΈ распространяСтся бСсплатно.

E-mail: vasile.buldumac@ati.utm.md

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Universitatea Tehnică a Moldovei (utm.md)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python. Π§Π°ΡΡ‚ΡŒ 1

Рассмотрим популярныС инструмСнты для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ расскаТСм ΠΎΠ± ΠΈΡ… спСцификС ΠΈ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Автор: Π’Π°Π»Π΅Ρ€ΠΈΠΉ Π¨Π°Π³ΡƒΡ€, teacher assistance Π½Π° курсС ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python

Высокая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Π΅
трСбования ΠΊ качСству ΠΊΠΎΠ΄Π°. Каким критСриям Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄?
ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ошибок, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. НСдостаточноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ· этих ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ появлСнию Π½ΠΎΠ²Ρ‹Ρ… ошибок ΠΈΠ»ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ обнаруТСния ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…. НСбрСТно написанный ΠΈΠ»ΠΈ чСрСсчур Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, отсутствиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° врСмя исправлСния Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π°Π³Π°, вСдь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ приходится Π·Π°Π½ΠΎΠ²ΠΎ Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄. Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΈΠ΅, казалось Π±Ρ‹, Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ отсутствиС форматирования ΠΌΠΎΠ³ΡƒΡ‚ сильно Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

Командная Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ большС ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ трСбования ΠΊ качСству ΠΊΠΎΠ΄Π°, поэтому Π²Π°ΠΆΠ½Ρ‹ΠΌ условиСм ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ становится описаниС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ написанию ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ соглашСния, принятыС Π² языкС программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вСдСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΈΠ»ΠΈ собствСнноС (Π²Π½ΡƒΡ‚Ρ€ΠΈΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅) руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ. Π’Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ трСбования ΠΊ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ появлСния «Ρ€Π°Π·Π½ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ» срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΈΡ… обсуТдСниС. ΠšΡ€ΠΎΠΌΠ΅ этого, соблюдСниС Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ лоТится Π½Π° ΠΏΠ»Π΅Ρ‡ΠΈ программистов Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ВсС это ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ появлСнию инструмСнтов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ стилистичСских ΠΈ логичСских ошибок. О Ρ‚Π°ΠΊΠΈΡ… инструмСнтах для языка программирования Python ΠΌΡ‹ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Анализаторы ΠΈ автоматичСскоС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π’Π΅ΡΡŒ инструмСнтарий, доступный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Python, ΠΌΠΎΠΆΠ½ΠΎ условно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ способу рСагирования Π½Π° ошибки. ΠŸΠ΅Ρ€Π²Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° сообщаСт ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, пСрСкладывая Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π½Π° программиста. Вторая β€” ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ исправлСнного ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ автоматичСски вносит измСнСния.

И пСрвая, ΠΈ вторая Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΊΠ°ΠΊ простыС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ узкоспСциализированных Π·Π°Π΄Π°Ρ‡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° docstring ΠΈΠ»ΠΈ сортировка ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²), Ρ‚Π°ΠΊ ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅ ΠΏΠΎ возмоТностям Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ Π² сСбС Π±ΠΎΠ»Π΅Π΅ простыС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. БрСдства Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ (linter). НазваниС происходит ΠΎΡ‚ lint β€” статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° для языка программирования Π‘ΠΈ ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Π½Π°Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ (formatter).

Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ повСрхностном сравнСнии этих Π³Ρ€ΡƒΠΏΠΏ Π²ΠΈΠ΄Π½Ρ‹ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ² программисту, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ с оглядкой, Π΄Π°Π±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ошибки. И Π²ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ошибок β€” ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ исправлСния, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ процСсс исправлСния ошибок, оставляя программисту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ.

Бписок рассматриваСмых инструмСнтов для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python

Π§Π°ΡΡ‚ΡŒ 1

Π§Π°ΡΡ‚ΡŒ 2

БоглашСния принятыС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ замСчания

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΎΠ±Π·ΠΎΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ².

ВСрсия Python: Π²ΠΎ всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ вСрсия языка программирования Python.

Установка всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΎΠ±Π·ΠΎΡ€Π΅ практичСски ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Π° ΠΈ сводится ΠΊ использованию ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° pip.

НСкоторыС ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠΌΠ΅ΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² рСпозиториях дистрибутивов linux ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ установки с использованиСм git. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ для большСй опрСдСлСнности ΠΈ возмоТности повторСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ, установка Π±ΡƒΠ΄Π΅Ρ‚ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip.

Об ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…: стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ говоря ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ошибок. К ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ относятся ошибки стиля (Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ отступы, Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ строки), ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ β€” ошибки Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ошибки синтаксиса языка программирования (ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ написании Π½Π°Π·Π²Π°Π½ΠΈΠΉ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°). Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ошибок, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” оставлСнныС Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ высокая цикломатичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ВСстовый скрипт: для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΡ‹ создали ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ ΠΏΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ» example.py. ΠœΡ‹ ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ стали Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² Π½Π΅ΠΌ ошибок. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ листингов с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Ρ‚Π°ΠΊΠΎΠΌ случаС сильно β€œΡ€Π°Π·Π΄ΡƒΠ»ΠΎβ€ Π±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρƒ нас Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ†Π΅Π»ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ различия Π² β€œΠΎΡ‚Π»ΠΎΠ²Π΅β€ Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ошибок для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° example.py:

Π’ ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ нСсколько ошибок:

Руководства ΠΏΠΎ стилям: для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ сталкиваСтся с Ρ‚Π΅ΠΌΠΎΠΉ оформлСния ΠΊΠΎΠ΄Π°, Π² качСствС знакомства ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ руководства ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ для языка Python PEP8 ΠΈ PEP257. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π½ΡƒΡ‚Ρ€ΠΈΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… соглашСний ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Google Python Style Guide β€” https://github.com/google/styleguide/blob/gh-pages/pyguide.md

Pycodestyle

Pycodestyle β€” простая консольная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° соотвСтствиС PEP8. Один ΠΈΠ· ΡΡ‚Π°Ρ€Π΅ΠΉΡˆΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°, Π΄ΠΎ 2016 Π³ΠΎΠ΄Π° носил Π½Π°Π·Π²Π°Π½ΠΈΠ΅ pep8, Π½ΠΎ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΠΏΠΎ ΠΏΡ€ΠΎΡΡŒΠ±Π΅ создатСля языка Python Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россума.

Запустим ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° нашСм ΠΊΠΎΠ΄Π΅:

Π›Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎ мнСнию Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Π΅ΡΡ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ соглашСний PEP8. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° прост ΠΈ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

Pydocstyle

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρƒ pydocstyle ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π² Python: поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ соглашСния. Pydocstyle провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ docstring Ρƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, классов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… соотвСтствиС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ соглашСнию PEP257.

Pyflakes

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡƒΠΆΠ΅ рассмотрСнных инструмСнтов для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python pyflakes Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ стиля. ЦСль этого Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° β€” поиск логичСских ΠΈ синтаксичСских ошибок. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ pyflakes сдСлали ΡƒΠΏΠΎΡ€ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ простоту. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ данная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ провСряСмый Ρ„Π°ΠΉΠ», ΠΎΠ½Π° прСкрасно справляСтся c поиском синтаксичСских ошибок ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ это быстро. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сильно суТаСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ pyflakes β€” β€œΠ½ΡƒΠ»Π΅Π²Π°Ρβ€, всС Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ β€” это Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π² консоль:

Π’ нашСм тСстовом скриптС, ΠΎΠ½ нашСл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ модуля os. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с запуском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΅ΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Python Ρ„Π°ΠΉΠ»Π°, содСрТащСго синтаксичСскиС ошибки. Данная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ β€” Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±Π΅ вСрсии Python, Π²Π°ΠΌ придСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· вСрсий.

Pylint

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ рассматривали ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π»ΠΈΠ±ΠΎ стилистичСских, Π»ΠΈΠ±ΠΎ логичСских ошибок. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π² ΠΎΠ±Π·ΠΎΡ€Π΅ статичСский инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python β€” Pylint, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ совмСстил Π² сСбС ΠΎΠ±Π΅ возмоТности. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Π³ΠΈΠ±ΠΊΠΎ настраиваСмый инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python отличаСтся большим количСством ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых β€œΠΏΡ€ΠΈΠ΄ΠΈΡ€Ρ‡ΠΈΠ²Ρ‹Ρ…β€ ΠΈ β€œΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½Ρ‹Ρ…β€ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°. Анализ нашСго тСстового скрипта Π²Ρ‹Π΄Π°Π΅Ρ‚ вСсьма ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚, состоящий ΠΈΠ· списка Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚ΠΎΠ², статистичСских ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², прСдставлСнных Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΊΠΎΠ΄Π°:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ свою Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… мСст Π² ΠΊΠΎΠ΄Π΅:

[R]efactor β€” трСбуСтся Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³,
[C]onvention β€” Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ слСдованиС стилистикС ΠΈ соглашСниям,
[W]arning β€” ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ошибка,
[E]rror β€” ошибка,
[F]atal β€” ошибка, которая прСпятствуСт дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

β€” ГСнСрация Ρ„Π°ΠΉΠ»Π° настроСк (—generate-rcfile). ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с нуля. Π’ созданном rcfile содСрТатся всС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ настройки с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями ΠΊ Π½ΠΈΠΌ, Π²Π°ΠΌ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄ собствСнныС трСбования.

β€” ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄ сообщСний ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° example.py Π΄ΠΎΠ±Π°Π²ΠΈΠΌ строку:

ΠΈ запустим pylint. Из Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ β€œΠΈΡΡ‡Π΅Π·Π»ΠΎβ€ сообщСниС:

β€” Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ json (—output-format=json). ПолСзно, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сохранСниС ΠΈΠ»ΠΈ дальнСйшая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π»ΠΈΠ½Ρ‚Π΅Ρ€Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ….

β€” ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ запуск (-j 4). Запуск Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π½Π° многоядСрных процСссорах сокращаСт врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

β€” БистСма ΠΎΡ†Π΅Π½ΠΊΠΈ сохраняСт послСдний Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запусках ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ измСнСния, Ρ‡Ρ‚ΠΎ позволяСт количСствСнно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ прогрСсс исправлСний.

β€” ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ β€” отличная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ pylint. Π˜Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² случаях, ΠΊΠΎΠ³Π΄Π° pylint Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΈ Π΅ΡΡ‚ΡŒ β€œΠ»ΠΎΠΆΠ½Ρ‹Π΅β€ срабатывания, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ стандартного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Vulture

Vulture β€” нСбольшая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для поиска β€œΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎβ€ ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Python. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ast стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ создаСт абстрактныС синтаксичСскиС Π΄Π΅Ρ€Π΅Π²ΡŒΡ для всСх Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π”Π°Π»Π΅Π΅ осущСствляСтся поиск всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Vulture ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для очистки ΠΈ нахоТдСния ошибок Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ….

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ± инструмСнтах для Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python. Π‘ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой Π½Π°Π±ΠΎΡ€Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ посмотрим, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для автоматичСского форматирования ΠΊΠΎΠ΄Π°.

ЀРОО Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚:
Π”ΠΎ ΠΊΠΎΠ½Ρ†Π° октября дСйствуСт ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ backupmaster, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ скидку 5000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π½Π° курс ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python ΠΈ 5000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π½Π° курс МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

🐍 НайдитС ΠΈ ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ошибки Π² ΠΊΠΎΠ΄Π΅ Π½Π° Python: ΠΎΡ‚Π»Π°Π΄ΠΊΠ° с IDLE

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ публикуСтся с сокращСниями, Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ David Amos.

ВыявлСниС ошибок называСтся Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³ΠΎΠΌ, Π° Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ – ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈΡ… появлСния инструмСнт. Π£ΠΌΠ΅Π½ΠΈΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π² ΠΊΠΎΠ΄Π΅ – Π²Π°ΠΆΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ программиста, Π½Π΅ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ ΠΈΠΌ.

IDLE (Integrated Development and Learning Environment) – кроссплатформСнная интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ обучСния для Python, созданная Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ управлСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ интСрфСйсом ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² IDLE являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ управлСния (Debug Control window). ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π±Ρ€Π°Π² Π² мСню ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡƒΠ½ΠΊΡ‚ Debugβ†’Debugger.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли ΠΎΡ‚Π»Π°Π΄ΠΊΠ° отсутствуСт Π² строкС мСню, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ находится Π² фокусС.

Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ [DEBUG ON].

ΠžΠ±Π·ΠΎΡ€ ΠΎΠΊΠ½Π° управлСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, напишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π΅Π· ошибок. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ всС, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 – Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ.

Окно ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ панСль Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π° содСрТит сообщСниС:

Π Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ: ΠΊΠΎΠ΄ for i in range(1, 4): Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½, Π° ‘__main__’.module() сообщаСт, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ находимся Π² основном Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

НиТС ΠΏΠ°Π½Π΅Π»ΠΈ стСка находится панСль Locals, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСчислСны нСпонятныС Π²Π΅Ρ‰ΠΈ: __annotations__, __builtins__, __doc__ ΠΈ Ρ‚. Π΄. – это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ систСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. По ΠΌΠ΅Ρ€Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π² этом ΠΎΠΊΠ½Π΅, ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π² отслСТивании ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° располоТСны ΠΏΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ: Go, Step, Over, Out ΠΈ Quit – ΠΎΠ½ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ каТдая ΠΈΠ· этих ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Кнопка Step

НаТмитС Step ΠΈ ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° отличия. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, сообщСниС Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ стСка измСнилось:

На этом этапС выполняСтся line 1 ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ останавливаСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ line 2.

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ растущиС значСния i ΠΈ j ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ прохоТдСния Ρ†ΠΈΠΊΠ»Π° for. Π­Ρ‚ΠΎ полСзная Ρ„ΠΈΡ‡Π° поиска источника ошибок Π² ΠΊΠΎΠ΄Π΅. Π—Π½Π°Π½ΠΈΠ΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ Π·ΠΎΠ½Ρƒ.

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Go

Часто Π²Π°ΠΌ извСстно, Ρ‡Ρ‚ΠΎ ошибка Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠ»Ρ‹Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ кускС ΠΊΠΎΠ΄Π°, Π½ΠΎ нСизвСстно, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Step вСсь дСнь, установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова, которая скаТСт ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ вСсь ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π΅Π΅ Π½Π΅ достигнСт.

Π’ΠΎΡ‡ΠΊΠΈ останова ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° слСдуСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ (Ctrl для Mac) ΠΏΠΎ строкС ΠΊΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Set Breakpoint – IDLE Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ линию ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Clear Breakpoint.

УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² строкС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ print(). Окно Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ запуститС. Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, панСль стСка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ выполнСния line 1. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈ посмотритС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ стСка информация ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ line 3:

На ΠΏΠ°Π½Π΅Π»ΠΈ Locals ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ i ΠΈ j ΠΈΠΌΠ΅ΡŽΡ‚ значСния 1 ΠΈ 2 соотвСтствСнно. НаТмСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈ попросим ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΈΠ»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π½ΠΎΠ²Π° Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Go – ΠΎΠΊΠ½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выглядит Ρ‚Π°ΠΊ:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

На ΠΏΠ°Π½Π΅Π»ΠΈ стСка отобраТаСтся Ρ‚ΠΎ ΠΆΠ΅ сообщСниС, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ – ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ выполнСния line 3. Однако значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… i ΠΈ j Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π²Π½Ρ‹ 2 ΠΈ 4. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print() Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ».

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π·. Π’Π΅ΠΏΠ΅Ρ€ΡŒ i ΠΈ j Ρ€Π°Π²Π½Ρ‹ 3 ΠΈ 6. Если Π½Π°ΠΆΠ°Ρ‚ΡŒ Go Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Over ΠΈ Out

Кнопка Over Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ сочСтаниС Step ΠΈ Go – ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅ΡˆΠ°Π³ΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ». Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – ΠΊΠ½ΠΎΠΏΠΊΠ° Over ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ нСпосрСдствСнно ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π΅Π΅ выполнСния.

Аналогично Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π° – ΠΊΠ½ΠΎΠΏΠΊΠ° Out выполняСт ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ останавливаСтся.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDLE.

Π‘ΠΎΡ€ΡŒΠ±Π° с Π±Π°Π³Π°ΠΌΠΈ

ВзглянСм Π½Π° Β« Π³Π»ΡŽΡ‡Π½ΡƒΡŽ Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’ΠΎΡ‚ Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот ΠΊΠΎΠ΄ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, сохранитС ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5. ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – _h_e_l_l_o_, Π½ΠΎ вмСсто этого вывСдСтся o_.

Если Π²Ρ‹ нашли, Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π΅ исправляйтС Π΅Π΅. Наша Ρ†Π΅Π»ΡŒ – Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого IDLE.

Рассмотрим 4 этапа поиска Π±Π°Π³Π°:

Π¨Π°Π³ 1: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π½Π΅ смоТСтС Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстонахоТдСниС ошибки, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ логичСски ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠ΄Π° ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π°: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add_underscores() ΠΈ основной Π±Π»ΠΎΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«helloΒ» ΠΈ выводящий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° основной Ρ€Π°Π·Π΄Π΅Π»:

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ здСсь всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠŸΠ΅Ρ€Π²Π°Ρ строка создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ new_word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«_Β». ΠŸΡ€ΠΎΠΌΠ°Ρ…, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° находится Π³Π΄Π΅-Ρ‚ΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for.

Π¨Π°Π³ 2: Ρ‚ΠΎΡ‡ΠΊΠ° останова

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ², Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ошибка, установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ†ΠΈΠΊΠ»Π° for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° происходящим Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π°:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Запустим. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ останавливаСтся Π½Π° строкС с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Код останавливаСтся ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ add_underscores(). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Locals ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ – word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«helloΒ», ΠΈ new_word со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«_Β»,

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Step, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² Ρ†ΠΈΠΊΠ» for. Окно ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ измСнится, ΠΈ новая пСрСмСнная i со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0 отобразится Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Locals:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i – это счСтчик для Ρ†ΠΈΠΊΠ»Π° for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Step Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ посмотритС Π½Π° панСль Locals – пСрСмСнная new_word приняла Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«h_Β»:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚. ΠΊ. сначала Π² new_word Π±Ρ‹Π»ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«_Β», Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for Π² Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Β«_h_Β». Если Π½Π°ΠΆΠ°Ρ‚ΡŒ Step Π΅Ρ‰Π΅ нСсколько Ρ€Π°Π·, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² new_word ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ e_, Π·Π°Ρ‚Π΅ΠΌ l_ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π¨Π°Π³ 3: ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ошибки ΠΈ исправлСниС

Как ΠΌΡ‹ ΡƒΠΆΠ΅ выяснили – Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° new_word пСрСзаписываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ символом Π² строкС Β«helloΒ» ΠΈ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° строка ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ:

Код ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Python ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ word, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_word. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ наблюдали.

Π§Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ word[i] + » _» с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ new_word. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Quit Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° for Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Π±Ρ‹ Π²Ρ‹ Π·Π°ΠΊΡ€Ρ‹Π»ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Π½Π΅ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Quit, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠ³Π»Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ошибка:

You can only toggle the debugger when idle

ВсСгда Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Go ΠΈΠ»ΠΈ Quit, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΅Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ запуском.

Π¨Π°Π³ 4: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ шагов 1-3, ΠΏΠΎΠΊΠ° ошибка Π½Π΅ исчСзнСт

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ запуститС Π΅Π΅ снова. Π’ ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. ΠŸΠΎΠ½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ Step нСсколько Ρ€Π°Π· ΠΈ смотритС, Ρ‡Ρ‚ΠΎ происходит с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_word Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ – всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ. Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ этот процСсс нСсколько Ρ€Π°Π·, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ исправится ошибка.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы поиска ошибок

ИспользованиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТным ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ, Π½ΠΎ это самый Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ Π½Π°ΠΉΡ‚ΠΈ ошибки Π² ΠΊΠΎΠ΄Π΅. Однако ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ Π½Π΅ всСгда Π΅ΡΡ‚ΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ print debugging для поиска ошибок Π² ΠΊΠΎΠ΄Π΅. PD задСйствуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print() для отобраТСния Π² консоли тСкста, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ мСсто выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

НапримСр, вмСсто ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π² ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π° for:

Π˜Π·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

PD Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько нСдостатков ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ΠΎΠΌ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ print().

Один ΠΈΠ· способов ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ наш Ρ†ΠΈΠΊΠ» – ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ символы Π² word:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ всС ΠΎΠ± ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DLE. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π΅Π±Π°Π³Π΅Ρ€Π°ΠΌΠΈ.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

НС ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³ – это вСсСло!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *