Функции

Вы можете определить свои собственные функции, которые выполняют определенную задачу. Вы также можете передать входные параметры своим функциям. Вы определяете функцию, используя ключевое слово def, за которым следует имя функции и любые входные параметры, которые у вас могут быть. Если хотите, вы можете определить значения по умолчанию для ваших параметров. Функции могут возвращать значение с помощью команды return(). Если оператор возврата отсутствует, функция неявно вернет None. Типичный синтаксис функции выглядит следующим образом.

def function_name(parameter):
    """ documentation """
    statement(s)
    return(value)
def test_function():   
    print('test')
test_function()
test
def iLove(food):
    print('I love ' + food)
iLove('chocolate')
I love chocolate

Вот еще одна версия вышеупомянутой функции, которая использует значение по умолчанию для своего входного параметра.

def iLove(food='junk food'):
    print('I love ' + food)
iLove()
I love junk food

Другой пример функции, которая выполняет математическую операцию на основе входного значения.

def five_times(x):
    return(5 * x)
five_times(3)
15

Всегда полезно документировать свои функции. Документацию следует писать сразу после объявления функции. Например, предположим, что вы хотите создать функцию square, возвращающую квадратное значение ее входного параметра.

def square(x):
    """
    Returns the square of the input.
    """
    return x ** 2
square(4)
16

Чтобы получить доступ к «документации» функции, вы используете ее метод __doc__.

square.__doc__
'\n    Returns the square of the input.\n    '

Самоанализ объекта

Чтобы получить помощь по переменным и функциям, добавьте ? в начале.

# the output will appear in a box at the bottom of your browser.
?print
Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
Type:      builtin_function_or_method
?square
Signature: square(x)
Docstring: Returns the square of the input.
File:      ~/Dropbox/ml_course_mats/Python_notebooks/<ipython-input-140-e78a16767571>
Type:      function

С функциями добавьте ?? в начале, чтобы увидеть исходный код, если он доступен.

??square
Signature: square(x)
Source:   
def square(x):
    """
    Returns the square of the input.
    """
    return x ** 2
File:      ~/Dropbox/ml_course_mats/Python_notebooks/<ipython-input-140-e78a16767571>
Type:      function

Модули

Модуль — это просто библиотека кода. Это файл, содержащий набор функций (также известных как методы/команды) и переменных (также известных как атрибуты), которые вы можете включить в свой код. Если кто-то уже написал нужный вам модуль, вы можете просто использовать его вместо того, чтобы изобретать велосипед! Наиболее часто используемые модули в Python для анализа данных — это модули NumPy, Pandas, StatsModels и Scikit-Learn.

Вы можете увидеть список доступных переменных и функций в модуле с помощью команды dir().

import numpy as np
dir(np)[100:110]
['array',
 'array2string',
 'array_equal',
 'array_equiv',
 'array_repr',
 'array_split',
 'array_str',
 'asanyarray',
 'asarray',
 'asarray_chkfinite']

В качестве простой иллюстрации давайте создадим матрицу, используя NumPy.

data = np.arange(12)
data.reshape(3,4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])