일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가운데 글자 가져오기 파이썬
- 나누어 떨어지는 숫자 배열 python
- 최소 스패닝 트리 자바
- 코드업 1020 java
- 프로그래머스 가운데 글자 가져오기 파이썬
- 핸즈온 머신러닝
- 빅분기실기
- 빅데이터분석기사
- 가운데 글자 가져오기 python
- docker 삭제
- 최소 스패닝 트리
- 코드업 1020 자바
- 트리의 지름 자바
- codeup 1020 java
- docker remove
- 청년 AI Big Data 아카데미 13기
- 가운데 글자 가져오기 java
- 청년 Ai Big Data 아카데미
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 트리의 지름 java
- 프로그래머스 가운데 글자 가져오기 python
- codeup 1020 자바
- 가운데 글자 가져오기 자바
- 프로그래머스 가운데 글자 가져오기 자바
- 나누어 떨어지는 숫자 배열 java
- docker 완전 삭제
- 최단 경로 알고리즘
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- m1 docker
- m1 docker install
- Today
- Total
NineTwo meet you
[파이썬기초] 함수 본문
수학에서 배웠듯이 함수는 y = f(x)의 형태다.
쉽게 반복적으로 사용되는 가치 있는 부분(f)을 만들어 입력값(x)이 주어졌을 때 결괏값(y)을 돌려주는 것이다.
1. 입력값과 결괏값 둘 다 존재하는 경우
def 함수명(매개변수):
수행할 문장 1
수행할 문장 2
...
return 결괏값
#사용 1
>>>변수 = 함수명(매개변수)
# 사용 2
>>>함수명(매개변수)
def sum(num1, num2):
return num1+num2
>>>sum(1,2)
3
2. 입력값만 존재하는 경우
def 함수명(매개변수):
수행할 문장 1
수행할 문장 2
...
#사용
>>>함수명(매개변수)
def hi(str):
print("hi {}~~!". format(str))
>>>hi("Woody")
hi Woody~~!
3. 결괏값만 존재하는 경우
def 함수명():
수행할 문장 1
수행할 문장 2
...
return 결괏값
#사용 1
>>>변수 = 함수명()
# 사용 2
>>>함수명()
def say():
return "hello python world!!"
>>>say()
'Hello python world'
4. 입력값과 결괏값 모두 존재하지 않는 경우
def 함수명():
수행할 문장 1
수행할 문장 2
...
#사용
>>>함수명()
def star():
print(" * ")
print(" *** ")
print("*****")
print(" *** ")
print(" * ")
>>>star()
*
***
*****
***
*
매개변수 parameter
함수에 입력으로 전달된 값을 받는 변수를 의미한다.
def sum(a, b): #a와 b가 매개변수
return a+b
인수 argument
함수 호출 시 전달하는 입력값을 의미한다.
result = sum(2, 5) #2와 5가 인수
매개변수 기본값 설정
함수 호출 시 인수값을 기본값으로 미리 설정해두면 특정 인수를 지정하지 않을 때 기본값을 사용하게 된다.
단, 기본값을 설정하고 싶은 인수는 항상 뒤쪽에 위치시켜야 한다.
def printABC(a = 1, b = 2, c = 3):
print(a, b, c)
>>>printABC(123,456,789)
123 456 789
>>>printABC(123,456)
123 456 3
>>>printABC(123)
123 2 3
>>>printABC()
1 2 3
매개변수 지정하여 호출
함수를 호출할 때 순서대로 작성하지 않아도 매개변수의 이름으로 값을 지정하여 호출할 수 있다.
단, 한 변수에 중복해서 값을 지정할 수 없고 기본값이 지정되어있지 않은 변수는 앞에 위치시켜야 한다.
def printABC(a, b = 8, c = 6):
print(a)
print(b)
print(c)
#순서 상관없이 매개변수의 이름으로 값을 지정해 호출 가능
>>>printABC(c = 3, a = 1, b = 2)
1
2
3
#기본값이 지정되지 않은 변수를 앞에 지정하지 않아 오류 발생
>>> printABC(c = 3, 2, b = 2)
File "<stdin>", line 1 SyntaxError: positional argument follows keyword argument
#기본값이 지정되지 않은 변수를 앞에 지정한 경우 오류가 발생하지 않음
>>> printABC(2, b = 7)
2
7
6
#한 변수를 여러 번 사용해 오류 발생
>>> printABC(2, b = 7, b = 9)
File "<stdin>", line 1 SyntaxError: keyword argument repeated
*매개변수 호출
매개변수의 개수가 지정되어있지 않고 가변 길이의 인자일 때 사용한다.
사용하면 매개변수를 튜플로 받는 것을 확인할 수 있다.
def 함수명(*args):
수행할 문장 1
수행할 문장 2
...
def tuplePrint(*arg):
print(type(arg))
# *arg로 받은 매개변수가 튜플인 것을 확인할 수 있다.
>>> tuplePrint(1,2,3)
<class 'tuple'>
def sumAll(*arg):
sum = 0
for i in arg:
sum += i
return sum
>>> sumAll(1,2,3,4,5,6,7,8,9)
45
>>> sumAll(1,2,3,4,5)
15
**매개변수 호출
입력값들을 모두 딕셔너리로 받는 것을 확인할 수 있다.
앞에서 매개변수를 지정해서 함수를 호출하듯이 불러야 한다.
변수 = 값, 변수 = 값
변수가 키가 되고 값이. value가 된다.
다만 이런 식으로 선언 시 변수에는 숫자가 들어갈 수 없다.
def 함수명(**args):
수행할 문장 1
수행할 문장 2
...
return 값 이용
보통 return값이 1개인데 여러 개를 사용할 수도 있다.
이런 경우 리턴 값을 여러 개를 지정한 경우 각각을 변수에 저장하여 사용하거나 한꺼번에 튜플로 받을 수 있다.
def sumAvg(*arg):
c = 0
s = 0
a = 0
for i in arg:
c += 1
s += i
a = s/c
return s, a
>>> sumAvg(1,2,3,4,5)
(15, 3.0)
>>> sum, avg = sumAvg(1,2,3,4,5)
>>> sum
15
>>> avg
3.0
>>> t = sumAvg(1,2,3,4,5)
>>> t
(15, 3.0)
>>>type(t)
<class 'tuple'>
global
함수에서 return을 사용하는 이유는 함수 안에서 사용했던 변수의 값을 함수 밖에서도 사용하기 위해서다.
return을 사용하지 않고 함수 안에 변수를 밖에서도 사용하고 싶다면 global을 이용할 수 있다.
>>>s = 0
>>> def Num():
global s
s += 100
>>> s
0
>>> Num()
>>> s
100
lambda
- 함수를 생성하는 예약어로 def와 같은 기능을 수행한다.
- 단일문장으로 표현되는 익명의 함수를 의미한다.
- 익명함수 : 이름없는 구현체만 존재하는 간단한 함수를 의미한다.
- 코드상에서 한번만 사용되는 기능이 있을때 굳이 함수로 만들지 않고 1회성으로 사용할때 사용한다.
- lambda에 유용하게 사용되는 함수
- filter : 특정 조건을 만족하는 요소만 남기고 필터링한다.
- map : 각 원소를 주어진 수식에 따라 변형하고 새로운 리스트를 반환한다.
- reduce : 마지막 한개의 값이 남을때까지 차례대로 앞의 2개의 원소를 가지고 연산을 수행하고 마지막 한개의 값을 출력한다.
함수명 = lambda 매개변수 1, 매개변수 2,... : 매개변수를 이용한 표현식
def farm(a, b):
print("감자는 {} 개 남았습니다.\n고구마는 {}개 남았습니 다.". format(a, b))
>>> farm = lambda a, b : print("감자는 {} 개 남았습니다.\n고구마는 {}개 남았습니 다.". format(a, b))
>>> farm(5,4)
감자는 5개 남았습니다.
고구마는 4개 남았습니다.
'프로그래밍언어 > 파이썬' 카테고리의 다른 글
[파이썬기초] 파일 입출력 (0) | 2020.09.23 |
---|---|
[파이썬기초] 사용자 입력과 출력 (0) | 2020.09.23 |
[파이썬기초] 제어문(조건문 & 반복문) (0) | 2020.09.22 |
[파이썬기초] 집합 (0) | 2020.09.22 |
[파이썬기초] 딕셔너리 (0) | 2020.09.22 |