Intelligent Coding Assistance

PyCharm provides smart code completion, code inspections, on-the-fly error highlighting and quick-fixes, along with automated code refactorings and rich navigation capabilities.

Intelligent code editor

Syntax highlighting

Read your code easier with customizable colors for Python code and Django templates. Choose from several predefined color themes.

Auto-Indentation and code formatting

Automatic indents are inserted on new line. Indent verification and code re-formatting are compliant with project code-style settings.

Configurable code styles

Select a predefined coding style to apply to your code style configuration for various supported languages.

Code completion

Code completion for keywords, classes, variables, etc. as you type or via Ctrl+Space. Editor suggestions are context-aware and offer the most appropriate options.

Code selection and comments

Select a block of code and expand it to an expression, to a line, to a logical block of code, and so on with shortcuts. Single keystroke to comment/uncomment the current line or selection.

Code formatter

Code formatter with code style configuration and other features help you write neat code that's easy to support. PyCharm contains built-in PEP-8 for Python and other standards compliant code formatting for supported languages.

Code snippets

Save time using advanced customizable and parametrized live code templates and snippets.

Code folding

Code folding, auto-insertion of braces, brackets & quotes, matching brace/bracket highlighting, etc.

On-the-fly error highlighting

Errors are shown as you type. The integrated spell-checker verifies your identifiers and comments for misspellings.

Multiple carets and selections

With multiple carets, you can edit several locations in your file at the same time.

Code analysis

Numerous code inspections verify Python code as you type and also allow inspecting the whole project for possible errors or code smells.


Quick-fixes for most inspections make it easy to fix or improve the code instantly. Alt+Enter shows appropriate options for each inspection.

Duplicated code detector

Smart duplicated code detector analyzes your code and searches for copy/pasted code. You'll be presented with a list of candidates for refactoring—and with the help of refactorings it's easy to keep your code dry.

Configurable language injections

Natively edit non-Python code embedded into string literals, with code completion, error-highlighting, and other coding assistance features.

Code auto generation

Code auto-generation from usage with quick-fixes; docstrings and the code matching verification, plus autoupdate on refactoring. Automatic generation of a docstring stub (reStructuredText, Epytext, Google, and NumPy).

Intention actions

Intention actions help you apply automated changes to code that is correct, to improve it or to make your coding routine easier.

Smart code navigation

Search everywhere

PyCharm can help you find anything, be it an item in the source code, user action, or UI element. Double-press Shift and start typing what you are looking for. Also, configure the search scopes based on your specific needs.

Go to class / file / symbol

Go to class / file / symbol are crucial operations for fast project navigation. Use wildcards and abbreviations to locate items faster.

Go to declaration

When Go to declaration invoked from a reference, opens the corresponding file and navigates to the symbol declaration.

Find Usages

Find Usages helps you locate usages of any symbol (e.g. class, method, field, etc.) in your code, in the current file or in the whole project.

Lens mode

In this mode you can scrutinize your code by simply hovering the mouse over any section in the scroll bar. When hovering over a warning or error strip, the code fragment will be annotated with an appropriate message.

Bookmarks and TODOs

Set bookmarks in your code to navigate through it easily or leave some reminders in code. Just type TODO in the comments, and PyCharm will keep track of it and list all the TODOs in a separate view.

Fast and Safe Refactorings

Make global project changes easily and safely. Local changes are made instantly in-place. Refactorings work in plain Python and other types of projects such as Django, Flask, Pyramid, etc.

Rename and Move

The Rename and Move refactorings work for files, functions, constants, classes, properties, methods, parameters, and local and global variables.

Extract Refactorings

Use Extract Variable/Field/ Constant/Parameter and Inline Local for improving the code structure within a method.

Extract Method

Use Extract Method to break up longer methods, Extract Superclass, Push Up, Pull Down to move the methods and classes.

Other Refactorings

The following refactorings are also available: Change signature, Convert to Python package/Convert to Python module, Make top level function and more.


Quick definition / documentation view

See the object definition or documentation in-place without losing your context.

External documentation view

External documentation view is available in the browser for Python standard library, Django, Google App Engine, Scientific packages, etc. (use Shift+F1).

Docstring stub generation

Automatically generate a docstring stub (Epydoc, reStructuredText, Google, NumPy) for a method.

Highlighting and completion

PyCharm provides syntax highlighting and code completion for tags and tag parameters inside Docstrings, as well as code matching verification, and autoupdate on refactoring.