Function

김상우·2022년 3월 15일
0

Python

목록 보기
6/14
post-thumbnail

완전 기초부터 시작하는 파이썬

def

  • 기본구조
def 함수이름(매개변수):
	수행할 문장1
    수행할 문장2
    ...
    return 결과값
  • 간단한 예제
def add(a, b):
    return a + b

print(add(3, 4))

함수의 이름은 add이고 입력으로 2개의 값(a, b)를 받으며 결과값은 2개의 입력값을 더한 값인 a + b이다.
`이 함수에서 a, b는 매개변수(parameter) 이고 3, 4는 인수(arguments) 라고 한다.

  • 결과

    7

  • 입력값이 없는 함수 예제
def say():
    return 'Hi'
    
print(say())

위 예제처럼 입력값이 없고 결과값만 있는 함수는 괄호 안에 아무것도 없이 사용한다.

  • 결과

    Hi

  • 여러개의 입력값을 받는 함수 예제

def add_mul(choice, *args):
    if choice == "add":    # 1
        result = 0
        for i in args:
            result += i    # 2
    elif choice == "mul":  # 3
        result = 1
        for i in args:
            result *= i    # 4
    return result

print(add_mul('add', 1, 2, 3, 4, 5))
print(add_mul('mul', 1, 2, 3, 4, 5))

1: 매개변수 choice에 'add'를 입력받았을 때
2: args에 입력받은 모든 값을 더한다.
3: 매개변수 choice에 'mul'를 입력받았을 때
4: args에 입력받은 모든 값을 곱한다.

  • 결과

    15
    120

  • 매개변수에 초기값 미리 설정하는 예제
def say_myself(day, date, weekend=True):
    print("요일 : %s요일" %day)
    print("날짜 : %d일" %date)
    if weekend:
        print("주말입니다.")
    else:
        print("평일입니다.")

say_myself("화", 15, False)

입력값으로 화, 15를 입력하면 day에 "화", date에 "15"가 대입된다.
weekend 라는 변수에 입력값을 주지 않는다면 초기값에 설정한대로 결과값이 True를 가지게 되지만 입력값에 False를 주게되면 weekend 변수에 False값이 대입되어 결과를 다르게 가질 수 있다.

  • 결과

    요일 : 화요일
    날짜 : 15일
    평일입니다.

  • numpy를 활용하여 생성한 무작위 배열의 최대 최소값을 구하는 함수 예제
import numpy as np

def max_min(input_arr):
    M, m = None, None
    for val in input_arr:
        if M == None or val > M:
            M = val
        if m == None or val < m:
            m = val
    return M, m

for i in range(10):
    random_arr = np.random.randint(0, 1000, 10)
    Max_val, min_val = max_min(random_arr)
    
    print(random_arr)
    print(Max_val, min_val)

def max_min(input_arr) : 매개변수가 입력되면 M(최대값), m(최소값)을 구하는 함수
random_arr : numpy를 활용하여 0부터 1000까지의 수 중 10개를 무작위로 나열한 배열
이 예제에서의 매개변수 : random_arr
함수의 결과값 : M, m
M은 Max_val, m은 min_val에 결과값이 대입된다.

  • 결과

    [923 249 418 490 42 214 55 578 635 156]
    923 42
    [601 258 874 329 549 199 912 97 259 863]
    912 97
    [643 849 269 401 893 23 614 122 819 735]
    893 23
    [293 502 176 355 441 541 947 455 506 923]
    947 176
    [625 274 904 280 85 494 913 217 0 664]
    913 0
    [979 710 599 737 671 606 709 202 941 352]
    979 202
    [218 708 129 23 671 775 402 209 899 761]
    899 23
    [362 789 470 618 239 242 740 47 150 553]
    789 47
    [913 73 369 371 47 434 432 317 927 276]
    927 47
    [652 676 490 429 522 609 837 628 508 315]
    837 315

lambda

함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 하며,보통 함수를 한줄로 간결하게 만들 때 사용한다.
def를 사용해야할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 사용한다.

  • 기본구조
# 매개변수를 사용한 표현식
lambda 매개변수1, 매개변수2, 매개변수3, ...
  • 간단한 예제
add = lambda a, b: a + b
print(add(3, 4))

lambda의 간단한 예제는 맨 처음에 했던 def의 간단한 예제에서 수행하는 일이 완전히 동일하다.
lambda 예약어로 만든 함수는 return 명령어가 없어도 결과값을 돌려준다.

  • 결과

    7

profile
아침엔 운동하고 밤엔 잠을 잔다.

0개의 댓글