본문 바로가기

Python 기초 배우기/비전공자도 배우는 파이썬 기초

17. 파이썬 함수: 추가 형태와 기능(완벽 정리), lambda, global, args

#*매개변수 #args #global #글로벌 #lambda #람다 #파이썬함수

파이썬 함수의 기본 형태는

아래 링크를 통해 확인하시면 됩니다~

기본 형태 외에 다양한 추가 형태와

기능들을 공부하겠습니다.

 

 

15. 파이썬 함수: 내장함수(Built-in)

#파이썬함수 #내장함수 #Built-in #Functions #범용함수 #len #abs #round #sorted #input #sort #pow #max #min #int #str ​ 파이썬 자체에 내장되어 언제든 사용할 수 있는 함수를 내장함수(built-in function..

planharry.tistory.com

 

 

16. 파이썬 함수: 함수 정의(Definition)

#함수정의 #definition #def #function #매개변수 #인수 #return ​ 파이썬 자체 내장함수를 사용하지 않고 사용자가 직접 함수를 만들 수 있습니다. 이를 '함수 정의'라고 합니다. ​ ■ 함수 정의 (Function

planharry.tistory.com

 

매개변수와 인수 매칭하기

매개변수 지정하기
기본적으로 인수는 입력 순서대로 매개변수에 할당됩니다.
그런데 매개변수를 지정할 수도 있습니다.

 

 

1) 매개변수의 기본값을 지정하기

매개변수를 입력할 때 기본값을 지정해 두면

인수가 할당되지 않았을 때 기본값을 반환합니다.

단, 기본값을 입력할 매개변수는 뒤 쪽부터 나열해야 합니다.

ex) def para(a=0,b,c) : ← 사용 불가!

 

def para(a,b,c=0):
  return a+b+c
print(para(1,2,3))  # 3번째 인수가 있어서 기본값 사용안함
print(para(1,2))    # 3번째 인수가 없어서 기본값 사용


def para(a,b=5,c=0):
  return a+b+c
print(para(1,2,3))
print(para(1))


##### result #####

6
3

6
6

 

이 방법을 사용하면

매개변수에 불 자료형을 할당하여

초깃값을 설정할 수 있습니다.

 

def tour(money1,money2,ticket=True) :
    print("예산은 ", money1 + money2, "원")
    if ticket :  #ticket 변수에 True가 입력되어 if문 실행
        print("비행기표가 있다.")
    else:
        print("예산에서 비행기를 예약해라.")

tour(2000,3000)  #매개변수에서 ticket 변수에 True가 입력됨
tour(2000,3000,False)


##### result #####

예산은  5000 원
비행기표가 있다.
예산은  5000 원
예산에서 비행기를 예약해라.

 

2) 매개변수를 지정하여 호출하기

인수를 입력할 때 특정 매개변수를 지정할 수 있습니다.

동일하게 매개변수를 지정할 인수들은 뒤쪽부터 나열해야 합니다.

 

def total(a,b,c) :
    return "{0}, {1}, {2}의 총합은 {3}입니다." .format(a,b,c,a+b+c)

result = total(c=3,b=6,a=1)  #인수 입력 시 매개변수를 지정
print(result)


##### result #####

1, 6, 3의 총합은 10입니다.

 

여러 개의 인수를 한 번에 받기
인수의 개수가 정해지지 않은 함수를 만들고 싶을 때
def 함수명(*매개변수): 로 표현하면 됩니다.

 

def show(*numbers): #numbers 변수앞에 *를 붙여서 인수를 여러 개 받을 수 있음
    print("입력된 숫자는", numbers)
    return "종료합니다."

print(show(1,2))
print(show(1,2,3,4,5))


##### result #####

입력된 숫자는 (1, 2)
종료합니다.
입력된 숫자는 (1, 2, 3, 4, 5)
종료합니다.

 

아래는 인수를 모두 더하여

총합을 구하는 함수를 만들어 보겠습니다.

↓↓ for문 참고 ↓↓

 

 

14. 파이썬 제어문: for문, 반복문, range, end

#제어문 #for문 #파이썬for #반복문 #range #end ​ ​ 파이썬 제어문 중 마지막 배울 for문입니다. while문과 같이 for문도 반복문입니다. ​ 파이썬 제어문의 종류 1. if문 (특정 조건의 만족 여부에 따라

planharry.tistory.com

 

def sum_many(*args) :  #args는 arguments의 약자로 여러개 인수를 받을때 자주 쓰임
    sum = 0
    for i in args :
        sum = sum + i
    return sum

print(sum_many(1))
print(sum_many(1,2,3))
print(sum_many(1,2,3,4,5,6,7))



##### result #####

1
6
28

일반 매개변수와 *매개변수를 같이 쓰는 경우

def test1(par1, *par2) :
    print("par1은 ", par1)    
    print("par2는 ", par2)
    return

test1(3,2,5)
test1(3,2,5,"안녕")


##### result #####

par1은  3
par2는  (2, 5)
par1은  3
par2는  (2, 5, '안녕')

인수가 여러 개 일 때도 사용 가능합니다.

 

def test2(a,b,c) :
    print("a는 ", a)
    print("b는 ", b)
    print("c는 ", c)
    return
args = 10,20,30
test2(*args)   #args에 입력된 값을 순서대로 매개변수에 할당


def test2(a,b,*c) : #변수c에 몇개의 인수를 받을 지 모를땐 *표시
    print("a는 ", a)
    print("b는 ", b)
    print("c는 ", c)
    return
args = 10,20,30
test2(1,2,*args) 


##### result #####

a는  10
b는  20
c는  30

a는  1
b는  2
c는  (10, 20, 30)

함수의 추가 기능

 

global (글로벌)
함수는 def 내의 영역에서만 변수의 효력이 있습니다.
함수 밖의 변수를 가져와서 사용하고 싶을 때 global 명령어를 이용합니다.
apple = 2000
print("원래 사과의 가격은: ", apple)

def mart(apple):
    apple = apple + 1500  #apple에 1500을 더해서 저장
    print("함수내 사과의 가격은: ", apple)
mart(5000)

print("함수 호출 후 사과가격:", apple) 
#함수 호출 후 실제 사과 가격은 그대로 2000원으로 표시


##### result #####

원래 사과의 가격은:  2000
함수내 사과의 가격은:  6500
함수 호출 후 사과가격: 2000

 

함수를 실행 한 변수 결과를 함수 밖의 영역에서도

사용하고 싶을 때 해결 방법을 보겠습니다~

그런데, 함수는 독립적인 영역으로 존재하는 것이

좋기 때문에 global 명령어는 지양하도록 합시다.

 

apple = 2000
print("원래 사과의 가격은: ", apple)

def mart(rise):   #매개변수명 변경
    global apple  #명령어를 사용하여 apple 변수 가져오기
    apple = apple + rise
    print("함수내 사과의 가격은: ", apple)
mart(5000)

print("함수 호출 후 사과가격:", apple)


##### result #####

원래 사과의 가격은:  2000
함수내 사과의 가격은:  7000
함수 호출 후 사과가격: 7000

 

다른 방법으로 return 을 사용하여

함수 호출로 나온 값을 apple에 저장할 수 있습니다.

 

apple = 2000
print("원래 사과의 가격은: ", apple)

def mart(apple):
    apple = apple + 1500
    print("함수내 사과의 가격은: ", apple)
    return apple

apple = mart(5000)

print("함수 호출 후 사과가격:", apple)


##### result #####

원래 사과의 가격은:  2000
함수내 사과의 가격은:  6500
함수 호출 후 사과가격: 6500

 

 

lambda (람다)
함수를 한 줄로 간단하게 표현하는 예약어

def 와 같이 lambda 또한 함수를 만드는 예약어입니다.

lambda 매개변수1, 매개변수2 : 표현식

def total(a,b,c):
    return a+b+c

print(total(1,2,3))


##### result #####

6

 

위 함수를 lambda로 표현하면 아래와 같습니다.

 

total = lambda a,b,c : a+b+c

print(total(1,2,3))


##### result #####    

6