- ru
- Language: en
- Documentation version: latest
Интерпретатор Python. IPython
Интерпретатор позволяет получать моментальный отклик на выполненные действия. Можно сказать, что интерпретатор работает как CLI (Command Line Interface) сетевых устройств: каждая команда будет выполняться сразу же после нажатия Enter. Однако есть исключение – более сложные объекты (например циклы или функции) выполняются только после двухкратного нажатия Enter.
В предыдущем разделе, для проверки установки Python вызывался стандартный интерпретатор. Кроме него, есть и усовершенствованный интерпретатор IPython. IPython позволяет намного больше, чем стандартный интерпретатор, который вызывается по команде python. Несколько примеров (возможности IPython намного шире):
автодополнение команд по Tab или подсказка, если вариантов команд несколько;
более структурированный и понятный вывод команд;
автоматические отступы в циклах и других объектах;
можно передвигаться по истории выполнения команд, или же посмотреть её “волшебной” командой %history.
Установить IPython можно с помощью pip (установка будет производиться в виртуальном окружении, если оно настроено):
pip install ipython
После этого, перейти в IPython можно следующим образом:
$ ipython
Python 3.7.3 (default, May 13 2019, 15:44:23)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
Для выхода используется команда quit. Далее описывается, как будет использоваться IPython.
Для знакомства с интерпретатором можно попробовать использовать его как калькулятор:
In [1]: 1 + 2
Out[1]: 3
In [2]: 22*45
Out[2]: 990
In [3]: 2**3
Out[3]: 8
В IPython ввод и вывод помечены:
In – входные данные пользователя
Out – результат, который возвращает команда (если он есть)
числа после In или Out – это порядковые номера выполненных команд в текущей сессии IPython
Пример вывода строки функцией print():
In [4]: print('Hello!')
Hello!
Когда в интерпретаторе создаётся, например, цикл, то внутри цикла приглашение меняется на многоточие. Для выполнения цикла и выхода из этого подрежима необходимо дважды нажать Enter:
In [5]: for i in range(5):
...: print(i)
...:
0
1
2
3
4
help()
В IPython есть возможность посмотреть справку по произвольному объекту, функции или методу с помощью help():
In [1]: help(str)
Help on class str in module builtins:
class str(object)
| str(object='') -> str
| str(bytes_or_buffer[, encoding[, errors]]) -> str
|
| Create a new string object from the given object. If encoding or
| errors is specified, then the object must expose a data buffer
| that will be decoded using the given encoding and error handler.
...
In [2]: help(str.strip)
Help on method_descriptor:
strip(...)
S.strip([chars]) -> str
Return a copy of the string S with leading and trailing
whitespace removed.
If chars is given and not None, remove characters in chars instead.
Второй вариант:
In [3]: ?str
Init signature: str(self, /, *args, **kwargs)
Docstring:
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.
Type: type
In [4]: ?str.strip
Docstring:
S.strip([chars]) -> str
Return a copy of the string S with leading and trailing
whitespace removed.
If chars is given and not None, remove characters in chars instead.
Type: method_descriptor
print()
Функция print()
позволяет вывести информацию на стандартный поток вывода
(текущий экран терминала). Если необходимо вывести строку, то её нужно
обязательно заключить в кавычки (двойные или одинарные). Если же нужно
вывести, например, результат вычисления или просто число, то кавычки не
нужны:
In [6]: print('Hello!')
Hello!
In [7]: print(5*5)
25
Если нужно вывести подряд несколько значений через пробел, то нужно перечислить их через запятую:
In [8]: print(1*5, 2*5, 3*5, 4*5)
5 10 15 20
In [9]: print('one', 'two', 'three')
one two three
По умолчанию в конце каждого выражения, переданного в print(), будет перевод строки. Если необходимо, чтобы после вывода каждого выражения не было бы перевода строки, надо в качестве последнего выражения в print() указать дополнительный аргумент end.
See also
Дополнительные параметры функции print Функция print
dir()
Функция dir()
может использоваться для того, чтобы посмотреть, какие имеются
атрибуты (переменные, привязанные к объекту) и методы (функции,
привязанные к объекту).
Например, для числа вывод будет таким (обратите внимание на различные методы, которые позволяют делать арифметические операции):
In [10]: dir(5)
Out[10]:
['__abs__',
'__add__',
'__and__',
...
'bit_length',
'conjugate',
'denominator',
'imag',
'numerator',
'real']
Аналогично для строки:
In [11]: dir('hello')
Out[11]:
['__add__',
'__class__',
'__contains__',
...
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill']
Если выполнить dir() без передачи значения, то она показывает существующие методы, атрибуты и переменные, определённые в текущей сессии интерпретатора:
In [12]: dir()
Out[12]:
[ '__builtin__',
'__builtins__',
'__doc__',
'__name__',
'_dh',
...
'_oh',
'_sh',
'exit',
'get_ipython',
'i',
'quit']
Например, после создания переменной a и test():
In [13]: a = 'hello'
In [14]: def test():
....: print('test')
....:
In [15]: dir()
Out[15]:
...
'a',
'exit',
'get_ipython',
'i',
'quit',
'test']