본문 바로가기

Python_programming

[Python] 함수(function)와 메서드(method)의 차이점

https://www.geeksforgeeks.org/difference-method-function-python/

 

Difference between Method and Function in Python - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

이번 포스팅은 위 글을 번역 및 실습하고 마지막에 제 의견으로 정리하는 걸로 하겠습니다.

 

 

Python Method

  1. Method is called by its name, but it is associated to an object (dependent). (메서드가 이름으로 호출되지만 객체와 연결되어 있습니다.(종속))
  2. A method is implicitly passed the object on which it is invoked. (메서드는 메서드가 호출되는 개체를 암시적으로 전달합니다.)
  3. It may or may not return any data. (데이터가 반환되거나 반환되지 않을 수 있습니다.)
  4. A method can operate on the data (instance variables) that is contained by the corresponding class(메소드는 해당 클래스에 포함된 데이터(인스턴스 변수)에서 작동할 수 있습니다.)

 

- Basic Method Structure in Python -

 

class class_name:
    def method_name(*args,**kwargs):
        ...
        # method body
        ...

 

 

 

 

- Python 3 User-Defined Method  -

 

class ABC:
    def method_abd(self):
        print("I am in method_abc of ABC class.")
        
class_ref = ABC()
class_ref.method_abd()

 

 

 

 

- result -

 

 

 

 

 

Functions

  1. Function is block of code that is also called by its name. (independent) (함수는 코드 블록이며 이름으로도 불린다. (독립))
  2. The function can have different parameters or may not have any at all. If any data (parameters) are passed, they are passed explicitly. ( 함수의 매개 변수가 다르거나 하나도 없을 수 있다. 전달된 데이터(매개 변수)가 있으면, 매개변수들은 명시적으로 전달됩니다. )
  3. It may or may not return any data. (데이터가 반환되거나 반환되지 않을 수 있습니다.)
  4. Function does not deal with Class and its instance concept. (함수는 클래스 및 클래스 인스턴스 개념을 다루지 않습니다. )

 

 

 

 

 

 

- Basic Function Structure in Python -

 

 

def function_name(arg1,arg2,...):
    ...
    # function body
    ...

 

 

- Python 3 User-Defined Function  -

 

 

def Subtract(a,b):
    return a-b

print(Subtract(10,12))
print(Subtract(15,6))

 

 

- result -

 

 

- Python 3 Inbuilt Function  -

 

s = sum([5, 15, 2])
print( s )
  
mx = max(15, 6)
print( mx )

 

 

 

- result -

 

 

 

 

 

 

Difference between method and function

 

  1. Simply, function and method both look similar as they perform in almost similar way, but the key difference is the concept of ‘Class and its Object‘. 간단히 말해서, function과 method는 거의 비슷한 방식으로 수행될 때 비슷하게 보이지만, 핵심적인 차이점은 '클래스와 그것의 객체'의 개념이다.
  2. Functions can be called only by its name, as it is defined independently. But methods can’t be called by its name only, we need to invoke the class by a reference of that class in which it is defined, i.e. method is defined within a class and hence they are dependent on that class. (함수는 독립적으로 정의되므로 이름으로만 호출할 수 있습니다. 그러나 메소드는 이름만으로 호출될 수 없습니다. 클래스가 정의된 클래스의 참조로 클래스를 호출해야 합니다. 즉 메소드는 클래스 내에서 정의되므로 클래스에 종속됩니다.)

 

 

 

여기서부터는 제가 아는 선에서 보충 설명을 해보겠습니다.

 

우리가 보통 점 연산자로 어떤 메서드에 접근을 할 때점 연산자 앞에 있는게

 

1) 인스턴스 이름(인스턴스 메서드인 경우) 

2) 클래스의 이름(클래스 메서드인 경우) 

을 두고 점 연산자로 메서드에 접근해서 사용을 합니다. 즉, 메소드는 점 연산자로 접근을 해야하는데 이 때 클래스 이름이나 인스턴스 이름을 붙인 상태로 넣어줘야 하므로 "종속된 관계"라고 할 수 있습니다. 

 

하지만, 함수는 그렇지 않죠? 사용자 정의 함수 또는 내장함수를 사용할 때 점 연산자를 써서 사용하나요? 

아니죠.  그냥 점연산자 통해서 사용하는게 아니고 바로 함수 이름 자체에 인자를 넣어줘서 사용합니다.

 

 

이상 함수와 메소드 차이점에 대해서 정리해보았습니다 :)