Книга: PyNEng
Назад: Синтаксис Python
Дальше: Переменные

Интерпретатор Python. IPython

Интерпретатор Python. IPython

Интерпретатор позволяет получать моментальный отклик на выполненные действия. Можно сказать, что интерпретатор работает как CLI (Command Line Interface) сетевых устройств: каждая команда будет выполняться сразу же после нажатия Enter. Однако есть исключение – более сложные объекты (например циклы или функции) выполняются только после двухкратного нажатия Enter. В предыдущем разделе, для проверки установки Python вызывался стандартный интерпретатор. Но, кроме него, есть и усовершенствованный интерпретатор, называющийся IPython ( IPython). IPython позволяет намного больше, чем стандартный интерпретатор, который вызывается по команде python. Несколько примеров (впрочем, возможности IPython намного шире):

  • автодополнение команд по Tab или подсказка, если вариантов команд несколько;
  • более структурированный и понятный вывод команд;
  • автоматические отступы в циклах и других объектах;
  • можно передвигаться по истории выполнения команд, или же посмотреть её "волшебной" командой %history.

Установить IPython можно с помощью pip (установка будет производиться в виртуальном окружении, если оно настроено):

pip install ipython 

После этого, зайти в IPython можно следующим образом:

$ ipython Python 3.6.3 (default, Oct  9 2017, 11:46:27) Type 'copyright', 'credits' or 'license' for more information IPython 6.2.1 -- 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 

Если нужно вывести подряд несколько значений через пробел, то нужно перечислить их через запятую (подробнее о print() в ):

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.

Например, такое выражение выведет строки "one" и "two" в разных строках:

In [10]: print('one'), print('two') one two Out[10]: (None, None) 

Но если в print() указать параметр end равным пустой строке, результат будет таким:

In [11]: print('one', end=''), print('two') onetwo Out[11]: (None, None) 

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'] 
Назад: Синтаксис Python
Дальше: Переменные