#*매개변수 #args #global #글로벌 #lambda #람다 #파이썬함수
파이썬 함수의 기본 형태는
아래 링크를 통해 확인하시면 됩니다~
기본 형태 외에 다양한 추가 형태와
기능들을 공부하겠습니다.
■ 매개변수와 인수 매칭하기
매개변수 지정하기
기본적으로 인수는 입력 순서대로 매개변수에 할당됩니다.
그런데 매개변수를 지정할 수도 있습니다.
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문 참고 ↓↓
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
'Python 기초 배우기 > 비전공자도 배우는 파이썬 기초' 카테고리의 다른 글
16. 파이썬 함수: 함수 정의(Definition) (0) | 2021.05.16 |
---|---|
15. 파이썬 함수: 내장함수(Built-in) (0) | 2021.05.13 |
14. 파이썬 제어문: for문, 반복문, range, end (0) | 2021.04.20 |
13. 파이썬 제어문: while문, 반복문, else, break, continue (0) | 2021.04.17 |
12. 파이썬 제어문: if문, 조건문, elif, else (1) | 2021.03.05 |