[python]_함수(2)

Hi K·2022년 10월 11일
0

파이썬기초

목록 보기
10/12

1. (참고) 매개변수와 인수

매개변수(parameter, 입력인자, 입력값)

함수에 전달된 값을 저장하는 변수 / 함수를 선언할 때 정의하는 변수

인수/ 인자 (argument)

함수를 호출(=사용)할 때 전달하는 입력값

매개변수를 2개 이상 받는 케이스
sum_func 이라는 이름으로 함수를 선언해주세요.
이 함수는 num1, num2 2개의 변수를 입력받고
두개를 합산한 값을 리턴합니다

def sum_func(num1,num2):
   return num1 + num2
sum_func(3,5)

참고
변수선언시 단어사이를 _(언더바)로 표기하는것을 스네이크케이스
첫번째 글자만 대문자로 표기하는 것을 파스칼케이스라고 한다


2. 매개변수 있는 함수

  • 인자 값을 전달 할 때 값만 입력하면 순서대로 매개변수에 할당된다.

  • 매개변수명을 지정하여 전달할 수 있다.

    매개변수가 3개인 함수를 설정해주세요
    매개변수명 3개는 자율적으로 만들어주세요.
    print()로 매개변수 3개가 뭐였는지 콘솔에 찍어준다음
    result 변수에 3개 합을 저장한 뒤 리턴합니다.
    함수명은 test1입니다.

 def test1(a,b,c):
    print(a,b,c)
    result = a + b + c
    return result
 test1(1,2,3)

  • 매개변수에 순서를 다르게 전달하고 싶다면 매개변수를 지목해 값을 대입한다.
test1(c=20, a =10, b=30)


2-1. 매개변수 초기 값 설정

  • 함수 정의문에서 매개변수 값을 할당하면 초기 값으로 설정

  • 함수 호출 시 값을 입력하지 않으면 초기 값으로 사용

  • 초기화시키고 싶은 매개변수들을 항상 뒤쪽에 위치

(참고) 포맷팅함수에서 인덱스번호, 변수명 사용했던 규칙과 유사


A-1. 디폴트값 선언을 사용한 예시
만약 a값을 주지 않으면 디폴트값인 1이 들어감

def test2(a=1, b=2, c=3):
    result = a + b + c
    return result
    test2()

A-2. 디폴트값 설정은 반드시 오른쪽요소부터 지정한다

def test2(a, b=1, c=0):
    result = a + b + c
    return result
test3(10)

# 파이썬 3.7부터 문법적 오류로 처리된다
def test3(a=0, b=1, c):
    result = a + b + c
    return result


3. 가변인자 리스트

  • 입력할 파라미터의 개수가 몇 개인지 모를때 사용함
  • 파라미터명 왼쪽에 *를 붙인다
# 인자를 하나받을 때
def get_member_list(p1):
    print("출석학생은 %s님 입니다." % p1)
get_member_list("유재석")

# 인자를 2개 받을때 
def get_member_list(p1, p2):
    print("출석학생은 %s님, %s님 입니다." % (p1, p2))
get_member_list("유재석", "김태호")

# 인자를 몇개 받을지 모를때 
def get_member(*stu):
    print(stu)
get_member("유재석", "정형돈", "하하", "정준하", "박명수", "김태호")

(예제)
가변 파라미터(*변수명)을 이용해서 학생들의 점수를 입력받는대로 다 저장했다가 총점을 얻어서 평균값을 구해 리턴하도록 코드를 작성해주세요.

def get_average(*scores):
    total = 0
    for score in scores:
        total += score
    return total, total/len(scores)
    
get_average(100, 79, 53, 66, 42, 88, 75, 56, 70, 75)

#리턴값을 두개 이상 주는 방법2
def get_average(*scores):
    total = 0
    for score in scores:
        total += score
    return "총점 : %s, 평균: %s" %(total, total/len(scores))
    
get_average(100, 79, 53, 66, 42, 88, 75, 56, 70, 75)

4. 키워드 파라미터 kwargs(keyword arguments)

  • 딕셔너리 형태로 저장되는 매개변수로 정의
  • ** 두 개가 붙으면 딕셔너리 형태로 가변인자를 받습니다.
    이 경우, 변수명=값 형식으로 호출해야 전달됩니다.
def test4(**kwargs):
    return kwargs
test4(name="홍길동",  age=19, gender='male')

5. 함수의 결과 값

  • 함수의 결과 값은 항상 1개
  • 여러 개의 결과를 가질 수 있지만 하나의 튜플로 전달
    ▶ 기본 문법
def 함수이름(매개변수이름):
	return 결과값 1 , 결과값 2

return 키워드는 전달받은 결과들을 하나의 튜플로 묶어서 반환
최종적으로 '하나의 변수'에 담을 수 있는 '하나의 값'으로 처리된다.

def test(a, b):
   sum_test = a + b
   mul_test = a * b
   return sum_test, mul_test

# 결과를 통째로 가져오기
a = test(3,4)
print(a)

# 결과를 개별 변수에 쪼개서 가져오기
s, m = test(5, 6)
print(s)
print(m)


(예제)

리스트로 입력받은 수들에 대해 양수만 필터링하여 반환해주는 함수를 작성해보세요.

  • 조건1. 입력값은 인자값으로 가변인자 리스트를 전달

  • 조건2. 결과값은 양수로만 구성된 새로운 리스트

def positive_list(*scores):
    # 양수를 적재할 빈 리스트 생성
    list1 =[]
    # scores 내부에 있던 숫자들을 순차적으로 score에 대입해 검사
    for score in scores:
        # 현재 대입된 숫자가 0보다 크면
        if score > 0 :
            list1.append(score)
    return list1    

positive_list(100, -1, 0, 10, 1)

profile
파이썬초짜의 기록

0개의 댓글