Различия между методами и функциями.
введение
Добро пожаловать в чудесный мир информатики и разработки программного обеспечения, где методы — это функции, но функции — это не методы, а методы — это просто функции, которые являются методами функции, и почему-то ничего из этого не сбивает с толку. В программном обеспечении у нас много причудливого жаргона, что делает его почти невозможным для тех, кто понятия не имеет, о чем мы говорим. Из почти 6000 человек, которых я опросил, знают ли они, что такое метод или функция, почти 98% ответили: «Пожалуйста, оставьте меня в покое. Перестаньте звонить сюда».
И если это не убедительные результаты, то я не знаю, что это такое.
Так в чем же разница между методом и функцией?
функции
Функции — самая важная часть компьютерного программирования. Функции предоставляют как ввод, так и вывод, а также арифметические действия для получения указанного вывода в одном сжатом пакете. Я ненавижу повторять здесь всю историю функции, но наши входные данные называются аргументами, а наши выходные данные называются возвратами. Функции просто делают код внутри себя воспроизводимым во многих различных ситуациях и областях.
Функции существуют на самом низком уровне вычислений, тогда как такие вещи, как типы и конструкторы, представляют собой функции более высокого уровня, которые появляются благодаря языкам программирования. При этом генерация метода в этом случае немного отличается.
методы
Сами методы также являются функциями, однако разница в том, что метод — это способ выполнения функции. В результате определение того, является ли функция методом или просто функцией, будет зависеть от того, из какой парадигмы используется язык. Например, в Python методы рассматриваются как любая функция, содержащаяся в классе. В C, однако, методов на самом деле не существует, поскольку функции имеют гораздо более прямую связь с типами, которые они поддерживают. Причина в том, что разные классы могут иметь функции под одним и тем же именем, которые принимают разные атрибуты для получения одного и того же результата. Например, рассмотрим следующие два класса:
class ExampleOne:
def __init__(self):
self.x = 5
def subone(self):
self.x - 1
class ExampleTwo:
def __init__(self):
self.x = "hello"
def subone(self):
self.x = self.x[0:len(self.x)]
В этом примере функция subone делает то же самое с каждым значением — на самом деле это не так, но давайте притворимся, что это так. Это делает subone методом, потому что функция имеет несколько определений, которые зависят от ввода для получения вывода.
Мы также рассмотрим еще один язык, который я часто использую, Джулия. Julia — это язык, который использует множественную диспетчеризацию в качестве парадигмы — что очень похоже на функциональное программирование, только методы обозначаются тем, какие типы предоставляются в качестве аргументов. В этой парадигме методы — это каждая диспетчеризация с соответствующими входными аргументами для этой диспетчеризации, а функции — это исходное имя, к которому применяются эти определения.
Итак, это был мой краткий обзор методов и функций. Конечно, войти в мир программирования и услышать, как оба термина используются взаимозаменяемо, как если бы они означали одно и то же, может сбить с толку, а затем услышать, что что-то описывается не как метод или просто как функция. Это может даже сбивать с толку при переходе в Julia, так как обычно любая функция будет отображать количество методов, которые она имеет.

Это, безусловно, важное различие, которое необходимо провести, хотя информации о различении этих двух терминов при обсуждении программного обеспечения не так уж и много. Я отвлекся, спасибо, что нашли время, чтобы прочитать и изучить эту информацию, используя мою статью из всех остальных. Я ценю это.