Python/공부내용

Python 공부내용 21.10.05. Python - Functions(함수)

HappyFrog 2021. 10. 5. 21:00

W3Schools의 Python Tutorial을 보며 해석하고 정리한 글입니다.

오역이 존재할 수 있습니다

저도 파이썬은 처음이니 가볍게 봐주세요 :D 

W3Schools


파이썬 함수

함수는 호출하면 실행하는 코드 블럭입니다.

 

당신은 매개변수라고 하는 데이터를 함수에 전달할 수 있습니다.

 

함수는 결괏값으로 데이터를 반환할 수 있습니다.

 

함수 만들기

파이썬에서 함수는  def  키워드를 사용하여 정의할 수 있습니다.

def my_function():
    print("Hello from a function")

 

함수 호출하기

함수를 호출하기 위해서는 함수 이름과 그 뒤의 괄호까지 작성하여 호출합니다.

def my_function():
    print("Hello from a function")

my_function()

▲ 결괏값

 

인수

정보는 인수로서 함수에 전달될 수 있습니다.

 

인수는 함수 이름 다음에 괄호 안쪽에 지정됩니다. 당신은 당신이 원하는 만큼의 인수를 추가할 수 있으며 그저 쉼표를 사용하여 인수들을 구분해주면 됩니다.

def my_function(fname):
    print(fname + "Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")

▲ 결괏값

 

인수? 매개변수?

매개변수와 인수라는 용어는 같은 곳에서 사용됩니다. => 함수에 전달되는 정보라는 것입니다.

 

함수의 시점:

 

매개변수는 함수 정의에서 괄호 안에 나열된 변수입니다.

 

인수는 함수가 호출될 때 전달되는 값입니다.

 

인수의 수

기본적으로 함수는 정확한 인수의 수와 함께 호출되도록 되어있습니다. 즉, 당신의 함수가 2개의 인수를 예상한다면, 당신이 함수를 호출할 때는 많지도 적지도 않은 딱 인수 2개와 함께 호출해야 한다는 뜻입니다.

def my_function(fname, lname):
    print(fname + " " + lname)

my_function("Emil", "Refsnes")

▲ 결괏값

 

하지만 위와 다르게 요구하는 인수의 개수와 다르게 인수를 할당한다면 :

def my_function(fname, lname):
    print(fname + " " + lname)

my_function("Emil")

▲ 결괏값 // 1개의 인수가 할당되지 않았다고 뜹니다.

오류가 나는 것을 확인할 수 있습니다.

 

임의 인수, *args

만약 당신이 얼마나 많은 인수들이 당신의 함수로 전달되어야 하는지 모른다면  를 함수의 정의 부분에서 매개변수의 이름 전에 사용해주면 됩니다.

 

이 방법은 함수가 인수의 튜플을 수용하게 하며 그에 따라 아이템들에 접근할 수 있습니다.

 

def my_function(*kids):
    print("The youngest child is " + kids[2])

my_function("Emil", "tobias", "linus")

▲ 결괏값

 

 

임의의 키워드 인수, **kwargs

만약 얼마나 많은 키워드 인수가 함수에 주어질지 모른다면 함수 정의 부분에서 매개변수의 이름 전에 별표를 두 개 추가해주세요 :  * 

 

이 방법은 함수가 인수를 딕셔너리로서 수용하게 해 주고 그에 따라 아이템들에 접근할 수 있습니다.

def my_function(**kid):
    print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")

▲ 결괏값 // 매개변수를 임의의 키워드로 해두고 인수를 두가지를 주었지만 사용하는 인수는 lname이기때문에 결과가 위처럼 나옵니다.

 

기본 매개변수 값

이어지는 예시에서는 매개변수의 기본값을 보여줍니다.

 

만약 우리가 함수를 인수 없이 호출할 때 기본값을 사용하게 됩니다.

def my_function(country = "Korea"):
    print("I am from " + country)

my_function("Sweden")
my_function("Japan")
my_function()
my_function("Brazil")

▲ 결괏값 // 인수가 없으니 기본값을 사용합니다.

 

리스트를 인수로 전달하기

당신은 어떠한 데이터 타입이던지 함수에 인수로 보낼 수 있습니다.(문자열, 숫자, 리스트, 딕셔너리 등) 그리고 그것은 함수 안에서 같은 데이터 타입으로 다뤄집니다.

 

예를 들어 당신이 리스트를 인수로 주었고 그것은 함수에 도달했을 때도 여전히 리스트입니다.

def my_function(food):
    for x in food:
        print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)

▲ 결괏값

 

반환 값

 return  을 사용하여 함수가 값을 반환하도록 할 수 있습니다.

def my_function(x):
    return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(7))

▲ 결괏값

 

pass 선언

 function  정의는 비어있을 수 없습니다. 하지만 당신이 어떠한 이유에서  function  을 내용 없이 정의하고 싶다면,  pass  를 선언하여 에러가 나는 것을 피하십시오

def my_function():
    pass

▲ 결괏값

 

재귀

파이썬은 재귀 함수를 사용할 수 있습니다. 즉, 함수가 함수 자신을 호출하도록 정의할 수 있다는 뜻입니다.

 

재귀는 흔한 수학적 프로그래밍 개념입니다. 이것은 함수가 자기 자신을 호출한다는 것을 의미합니다. 이것은 데이터를 통해 반복하여 결과에 도달하는데 이점이 있습니다.

 

이것은 함수가 끝나지 않거나 메모리 또는 프로세서 동력을 크게 사용할 수 있게 코드를 작성할 수 있으므로 재귀를 조심히 다뤄야 합니다. 하지만 재귀를 올바르게 사용한다면 이것은 굉장히 효율적이고 프로그래밍에 수학적으로 굉장히 훌륭한 접근을 할 수 있습니다.

def tri_recursion(k):
    if(k>0):
        result = k + tri_recursion(k-1)
        print(result)
    else:
        result = 0
    return result

print("Recursion Example Results")
tri_recursion(6)

▲ 결괏값 // 재귀를 통해 k는 1씩 낮추고 그에 대한 결과들을 출력합니다. k가 양수가 아니라면 재귀를 하지 않습니다.