Інтерпретатор Python. IPython¶
Інтерпретатор дозволяє отримати моментальний відгук на виконані дії. Можна сказати, що інтерпретатор працює як командний рядок мережевих пристроїв: кожна команда виконуватиметься відразу після натискання Enter. Однак є виняток - складніші вирази (наприклад цикли або функції) виконуються тільки після дворазового натискання Enter.
У попередньому розділі для перевірки установки Python викликався стандартний інтерпретатор. Крім нього, є й удосконалений інтерпретатор IPython. IPython дозволяє набагато більше, ніж стандартний інтерпретатор, який викликається за командою python. Декілька прикладів (можливості IPython набагато ширші):
- автодоповнення команд по Tab або підказка, якщо варіантів команд декілька
- більш структурований та зрозумілий вивід команд
- автоматичні відступи у циклах та інших об'єктах
- можна пересуватися з історії виконання команд, або ж подивитися її «чарівною» командою історії
Встановити IPython можна за допомогою pip (установка буде проводитися у віртуальному оточенні, якщо воно налаштоване):
Після цього, перейти в IPython можна так:
$ ipython
Python 3.11.1 (main, Dec 30 2022, 10:30:23) [GCC 10.2.1 20210110]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.13.2 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
Для виходу використається команда quit. Далі описується, як використовуватиметься IPython.
Для знайомства з інтерпретатором можна спробувати використати його як калькулятор:
В IPython введення та вивід позначені:
- In - вхідні дані користувача
- Out - результат, який повертає команда (якщо він є)
- числа після In або Out - це порядкові номери виконаних команд у поточній сесії IPython
Приклад виведення рядка функцією print():
Коли в інтерпретаторі створюється, наприклад, цикл, то всередині циклу запрошення змінюється на крапки. Для виконання циклу та виходу з цього підрежиму необхідно двічі натиснути Enter:
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
дозволяє вивести інформацію стандартний потік виведення
(поточний екран терміналу). Якщо необхідно вивести рядок, то його потрібно
обов'язково взяти в лапки (подвійні чи одинарні). Якщо ж потрібно вивести,
наприклад, результат обчислення чи просто число, то лапки не потрібні:
Якщо потрібно вивести поспіль кілька значень через пропуск, то потрібно перерахувати їх через кому:
За замовчуванням наприкінці кожного виразу, переданого в print, буде переведено рядок. Якщо необхідно, щоб після виведення кожного виразу не було б перекладу рядка, треба як останній вираз у print вказати додатковий аргумент end.
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: